Web API
Webサービスの機能やデータを、ほかのプログラムからHTTPなどのWebの技術を使って呼び出せるようにした窓口(インタフェース)。
イマシルちゃんの解説
APIは、プログラム同士が使う「注文の窓口」みたいなものなんだ。
レストランで、決まったメニュー表から料理を注文すれば、厨房の中がどうなっているか知らなくても、料理が出てくるよね。
Web APIも同じで、決まった形でお願い(リクエスト)を送れば、天気や地図や翻訳の結果を返してくれる。
これを使えば、自分のアプリに、よそのサービスの便利な機能を取り込めるんだよ!
より深い解説
定義
API(Application Programming Interface)は、あるソフトウェアの機能を、ほかのソフトウェアから利用するための決まりごと(呼び出し方、渡すデータ、返ってくるデータ)である。Web APIは、そのやり取りを、ネットワーク越しにHTTP(HTTPS)で行うものである。
REST API
現在のWeb APIの多くは、RESTの考え方に基づいて設計されている。
| 考え方 | 内容 |
|---|---|
| 資源をURIで表す | 例:/users/123(利用者123番) |
| 操作をHTTPのメソッドで表す | GET(取得)、POST(作成)、PUT(更新)、DELETE(削除) |
| ステートレス | サーバは、リクエストの間で利用者の状態を保持しない。必要な情報は毎回のリクエストに含める |
| データ形式 | 主にJSON(XMLも使える) |
例:天気の情報を取得する場合
GET https://api.example.com/weather?city=Tokyo
→ {"city": "Tokyo", "temperature": 21, "weather": "sunny"}
利用の管理とセキュリティ
| 仕組み | 内容 |
|---|---|
| APIキー | 利用者(アプリケーション)を識別するための文字列。リクエストに含めて送る |
| OAuth 2.0 | 利用者の許可を得て、アプリケーションに限定した権限(アクセストークン)を与える |
| 利用回数の制限 | 一定時間あたりの呼び出し回数を制限し、過剰な利用やサービス妨害を防ぐ |
APIキーやアクセストークンは、パスワードと同様に秘密にする必要がある。Webページのプログラム(JavaScript)やソースコードの公開リポジトリに、そのまま書き込まないように注意する。
Web APIの活用
| 活用 | 内容 |
|---|---|
| マッシュアップ | 複数のサービスのAPIを組み合わせて、新しいサービスを作る |
| システム連携 | 社内のシステムとクラウドサービスのデータをつなぐ |
| スマートフォンアプリ | アプリが、サーバのAPIを呼び出してデータを表示する |
SOAPとの比較
| REST API | SOAP | |
|---|---|---|
| 性格 | 設計の考え方 | 厳密なプロトコル |
| 形式 | JSONなど | XML |
| 重さ | 軽い | 重い(拡張仕様が豊富) |