API(Application Programming Interface)とは
ソフトウェアコンポーネント同士が互いに情報をやりとりするのに使用するインタフェースの仕様である。
ソフトウェアと何らかの機能との界面のことで、ソフトウェアの機能を共有できる仕組みのことをAPIと言う。
APIと聞くとWebのAPIを想像するが、APIという言葉だけでは仕組みのことを指すため、OSのAPIやデバイスドライバのAPI、グラフィックAPIなども含んでいる。
ただし、現場では仕組みだけではなく実際に利用可能なAPIエンドポイントまでを示すことが多く、基本的にAPIという言葉はWebAPIのエンドポイントのことを指して使うことが多い。
API に アクセスするための URI を指します。
名前または場所を識別する書き方のルールの総称を指します。URLとURNの総称がURIです。
- URL:URIの一部で、ページや画像などを取得したりするための主要な場所とアクセス方法を指定
-
URN:名前を永続的に識別する書き方のルール。(今回の講義では覚えなくて良いです)
- URNについて詳しく知りたい方は→ https://www.kanzaki.com/docs/html/urn.html
エンドポイント
連携したいAPIにアクセスするための接続先を指す
例 ) https://notion.engineering.nifty.co.jp/
Web API
Web API とは
Webアプリケーションが他のアプリケーションと通信・連携するための標準的なインターフェースのこと
異なるアプリケーションの間でデータやプログラムの機能をサービスとして活用できるよう規約や手順が定義されている
Web API の種類
REST (Representational State Transfer)API
-
HTTPプロトコルを使用するAPIの中で、現在最も汎用的に使用されている形式
- URLが事実上リソースのIDになっている
- HTTPメソッドで操作を行う
- クライアントの要求に応じたコントローラを組む必要がある
-
レスポンス
- HTTPステータスコードとレスポンスボディで構成され、レスポンスボディはJSON、XML、HTMLなどの形式で返される
-
ルーティング
- エンドポイントごとにリソースへのアクセス方法が異なるURIを使用してリクエストを処理する
-
リクエスト
curl -X GET https://api.example.com/users/123
GraphQL
- クライアントはデータの必要な部分だけをリクエストできることが特徴
-
クライアントからクエリを投げている
- GraphQL用のURLが一つあればいい
- 投げているクエリで全てが決まる
-
レスポンス
- GraphQLスキーマに基づいて構成され、JSON形式で返される
- クライアントが必要なデータのみを指定するため、不要なデータが返されない
-
ルーティング
- 単一のエンドポイント
- クライアントから必要なデータを取得するためにGraphQLクエリを使用する
-
リクエスト
curl -X POST https://api.example.com/graphql \ -H "Content-Type: application/json" \ -d '{"query": "{ user(id: 123) { name, email } }"}'