API(Application Programming Interface)とは APIエンドポイントとは エンドポイント Web API Web API とは Web API の種類 REST(Representational State Transfer)API GraphQL REST API と GraphQL の比較
API(Application Programming Interface)とは
ソフトウェアコンポーネント同士が互いに情報をやりとりするのに使用するインタフェースの仕様である。
引用:アプリケーションプログラミングインタフェース
APIとは、ソフトウェア同士が情報をやり取りするための「窓口」のこと。あるソフトウェアの機能を、他のソフトウェアから呼び出して使えるようにする仕組みを指す。
APIという言葉自体は非常に広い概念で、OSのAPI(ファイルの読み書きを行う機能)やグラフィックAPI(画面描画を行う機能)なども含む。ただし現場では、ほとんどの場合「Web API」のことを指して使われる。
APIエンドポイントとは
APIにアクセスするためのURIを指す。「このURLにリクエストを送れば、この機能が使える」という接続先のこと。
たとえば https://api.example.com/users がユーザー情報を取得するためのエンドポイントであれば、このURLにGETリクエストを送るとユーザー一覧が返ってくる。
ℹ️
URI / URL / URN の関係
- URI(Uniform Resource Identifier): リソースを識別するための書き方の総称
- URL(Uniform Resource Locator): URIの一部。リソースの場所とアクセス方法を指定する(普段使う「アドレス」のこと)
- URN(Uniform Resource Name): 名前で永続的に識別する書き方(今回は覚えなくてよい)
エンドポイント
連携したいAPIにアクセスするための接続先を指す。
Web API
Web API とは
Webアプリケーションが他のアプリケーションと通信・連携するための標準的なインターフェースのこと。HTTP(Webの通信プロトコル)を使ってデータをやり取りする。
Web APIが存在することで、異なるプログラミング言語やプラットフォームで作られたアプリケーション同士が連携できる。PythonのバックエンドとReactのフロントエンド、iOSアプリとAndroidアプリが同じAPIを呼ぶことで、同じデータ・同じ機能を共有できる。
Web API の種類
REST(Representational State Transfer)API
- 現在最も汎用的に使用されている形式
- HTTPメソッド(GET, POST, PUT, PATCH, DELETE)で操作を表現する
- URLがリソース(データ)の場所を表す
- レスポンスはJSON形式が主流
- リクエスト例
curl -X GET https://api.example.com/users/123 - レスポンス例
{ "id": 123, "name": "田中太郎", "email": "tanaka@example.com" }
GraphQL
- クライアントが必要なデータだけをリクエストできることが特徴
- 単一のエンドポイントに対してクエリ(問い合わせ)を投げる
- データ取得(query)以外にデータ変更(mutation)やリアルタイム購読(subscription)もサポートしている
- REST APIでは「エンドポイントごとに返すデータが決まっている」のに対し、GraphQLでは「クライアントが欲しいフィールドを指定できる」
- リクエスト例
curl -X POST https://api.example.com/graphql \ -H "Content-Type: application/json" \ -d '{"query": "{ user(id: 123) { name, email } }"}' - レスポンス例(nameとemailだけが返る)
{ "data": { "user": { "name": "田中太郎", "email": "tanaka@example.com" } } }
REST API と GraphQL の比較
| 観点 | REST API | GraphQL |
|---|---|---|
| エンドポイント | リソースごとに複数(/users, /products 等) | 1つ(/graphql) |
| 取得するデータ | エンドポイントが返すデータ全て | クライアントが指定したフィールドのみ |
| 学習コスト | 低い(HTTPの知識があればわかる) | やや高い(クエリ言語を覚える必要がある) |
| 主な用途 | 一般的なWeb API | 複雑なデータ構造を扱うフロントエンド |
今回の講義ではREST APIを扱う。