3秒でわかる
ソフトウェア同士が決まった形でやり取りするための窓口。相手の中身を知らなくても、決められた要求を送れば結果が返る状態を作るために使います。
30秒図解
もう少し詳しく
どういうものか
API は、あるソフトウェアが外から使ってもらうために公開している呼び出し口です。何を送れば何が返るかという取り決めだけが公開され、内部の実装は隠されています。使う側は相手がどの言語で書かれているかも、どんなデータベースを使っているかも知らずに済みます。
呼び出し口には種類があります。同じプログラムの中で使う関数やクラスの一覧も API ですし、ネットワーク越しに HTTP で叩く Web API も API です。会話の中で単に API と言われた場合、Web 開発の文脈ならたいてい後者を指します。
なぜ必要か
天気アプリを作るとき、気象観測から自分でやる人はいません。気象データを持っている組織が API を公開しているので、決められた URL に決められた形式で要求を出せば、JSON で結果が返ってきます。API があることで、機能を持っている側と、それを使いたい側が、別々のチーム・別々の会社・別々の言語のまま連携できます。
内部の作りを隠せることも重要です。提供側はデータベースを入れ替えても、API の形さえ変えなければ利用側のコードを壊しません。
具体例
fetch で Web API を呼び、返ってきた JSON を取り出します。
const res = await fetch("https://api.example.com/v1/users/42", {
headers: { Authorization: "Bearer TOKEN" },
});
if (!res.ok) throw new Error("失敗 " + res.status);
const user = await res.json();
console.log(user.name);つまずきやすいところ
返ってきたステータスコードを見ずに処理を進めると、原因の分からないエラーになります。fetch は 404 や 500 が返っても例外を投げず、res.ok が false になるだけです。中身は JSON ではなくエラーページの HTML かもしれず、その状態で json() を呼ぶと構文エラーとして落ちます。上の例のように、まずステータスを確かめてから中身を読むのが安全です。
もうひとつ多いのが認証キーの扱いです。ブラウザで動く JavaScript に API キーを直接書くと、開発者ツールで誰でも読めます。秘密にすべきキーはサーバー側に置き、ブラウザからは自分のサーバー経由で呼びます。
覚え方
レストランの注文口を思い浮かべると近いです。厨房の作り方は知らなくても、メニューに載っている名前で注文すれば料理が出てきます。メニューが API 仕様書、注文が リクエスト、料理がレスポンスにあたります。