【初心者向き】AxiosによるWeb APIへのアクセス方法~その① Axiosの使い方
- Post AuthorBy pitang1965
- Post DateTue May 19 2020
つまらないところで時間取られないようメモしておきます。超入門です。
前提知識と準備
- Node.jsがインストールされている。
- Node.jsでのプログラムの実行方法がわかる。例:> node test.js
- axiosがインストールされている。例:> npm i axios
- 【推奨】Google Chromeの拡張機能のJSON Formatterがインストールされている。
使用するAPI
- 米国食品医薬品局(FDA)の公開されているWeb APIを用います(登録不要で無料)。詳細な仕様はこちら。
- 登録された医療機器の識別子(UDI-DIと呼ばれる)からブランド名をなどのその医療機器の情報を得ます。
ブラウザからのAPIへのアクセス
ブラウザで次のURLにアクセスしてみます。
https://accessgudid.nlm.nih.gov/api/v2/devices/lookup.json?di=00302340989336
ツリー構造でJSON形式のデータが得られたと思います。
axiosからのAPIへのアクセス(成功する例)
- 次はブラウザで得られた大量の情報を同様に取得した上で、そのうちの1行だけ表示するプログラムです。
- JSONでルート → ‘gudid’ → ‘device’ → ‘brandName’ に相当するものを得る場合、axios.get(object)に対して、object.data.gudid.device.brandName で得ることができます。
- パスを知るためには、ブラウザやJSONをJSON Pretty Linter等のツールで見ることにより調べることができます。
const axios = require('axios');
const url =
'https://accessgudid.nlm.nih.gov/api/v2/devices/lookup.json?di=003023409893361';
axios
.get(url)
.then((res) => {
// 成功の場合に呼ばれる
console.log(res.data.gudid.device.brandName);
})
.catch((res) => {
// エラーの時に呼ばれる
console.log(res);
})
.then(() => {
// 必ず呼ばれる
console.log('必ず呼ばれます。');
});
- これを実行すると次の結果が得られます。
> node test.js DUREX Pleasure Pack Condom 必ず呼ばれます。
axiosからのAPIへのアクセス(失敗する例)
- 続いて上記URLの末尾に適当な文字を追加するとかして、無効なURLで呼び出してみます。
- すると大量のエラーが console.log (res) により出力されます。
- 一方ブラウザでは、次のように1行だけ出力されます。
- ターミナルでの実行結果は、JSONではなくてオブジェクトになるので、出力結果をVisual Studio Codeの.jsファイルとして保存して、整形するなどすると階層がわかります。
- 次のコードにより、1行だけ取得できるようになりました。
.catch((res) => {
console.log(res.response.data.error); // ② こちらだけコメントアウトするとエラーになる。
})
たぶん、その②に続きます。