【初心者向き】AxiosによるWeb APIへのアクセス方法~その① Axiosの使い方

2020-05-21

つまらないところで時間取られないようメモしておきます。超入門です。

前提知識と準備

  • 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 Formatterを入れたChromeでのエラーの表示
  • ターミナルでの実行結果は、JSONではなくてオブジェクトになるので、出力結果をVisual Studio Codeの.jsファイルとして保存して、整形するなどすると階層がわかります。
  • 次のコードにより、1行だけ取得できるようになりました。
  .catch((res) => {
    console.log(res.response.data.error); // ② こちらだけコメントアウトするとエラーになる。
  })

たぶん、その②に続きます。