はじめに
Web APIからJavaScriptを使ってデータを取得できると本格的なプログラムが作れますよね。
今回はaxiosを使って、郵便番号から住所を取得する方法を考えてみました。
axiosのインストール
まずはnpmを使ってプロジェクトにaxiosをインストールしておきましょう。
npm install axios
同様な機能として「fetch」がありますが、ブラウザの挙動に依存してしまいます。
「axios」を利用すれば環境差なく動作するので、とてもおすすめです。
axiosのGetの基本
axiosにはGet、Post、Putなどhttpリクエストを行う機能は一通りありますが、
今回は基本としてGetについて紹介します。
axios.getでURLを指定します。thenはリクエスト成功時の処理、catchはリクエスト失敗時の処理を書きます。
axios
.get("[URL]")
.then((res) => {
})
.catch((error) => {
});
axiosのGetで郵便番号から住所を取得する
応用編として郵便番号から住所を取得してみましょう。
APIはzipcloudさんのAPIを利用させていただいております。
郵便番号検索API - zipcloud
また、UIについては簡単にモダンなデザインを実現できるMaterial UIを利用しています。
必要でしたら下記の記事を参考に導入してみてください。
【React】npmを利用したMaterialUIのインストール方法のご紹介 - フロントエンドエンジニアのスターティングノート
App.js
import { useState } from "react";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";
import TextField from "@mui/material/TextField";
import axios from "axios";
function App() {
const [postCode, setPostCode] = useState("");
const [address, setAddress] = useState("");
function getPostCodeToAddress() {
axios
.get("https://zipcloud.ibsnet.co.jp/api/search?zipcode=" + postCode)
.then((res) => {
setAddress(
res.data.results[0].address1 +
res.data.results[0].address2 +
res.data.results[0].address3
);
})
.catch((error) => {
console.log(error);
});
}
return (
<>
<Box m={3}>
<TextField
variant="outlined"
size="small"
label="郵便番号"
value={postCode}
onChange={(e) => {
setPostCode(e.target.value);
}}
/>
</Box>
<Box m={3}>
<Button
variant="contained"
color="secondary"
onClick={getPostCodeToAddress}
>
GET
</Button>
</Box>
<Box m={3}>{address}</Box>
</>
);
}
export default App;