REST API概要
APIとは①
- Application Programming Interfaceの略
- インターフェースとは何かをするための「道具(ツール)」
- 例:ユーザーインターフェースはユーザーがPCを使うための道具
- プログラミングインターフェースはプログラミングのための道具
- APIとはアプリケーションを呼び出すためのプログラミングの道具
APIとは②
- APIによって一から自分でプログラム(道具)を準備することなくやりたいことが実現できる
- 例:Amazon Product Advertising API
- 自分のブログ等にAmazonのアフィリエイトリンクを生成するためのAPI
- ブログのソースにAPI呼び出し処理を記述することでAmazonの商品情報を取得・表示することができる
- 例:Amazon Product Advertising API
REST APIとは
- REST は REpresentational State Transfer の略で、コンピュータ・サイエンティストの Roy Fielding によって作られた
- 彼のRESTアーキテクチャスタイルの原則に合わせたAPI
- 彼のスタイルに合わせたREST APIは特にRESTful APIと呼ばれる
REST APIの定義
- ステートレス性
- 統一インターフェース
- アドレス可読性
- 接続性
ステートレス性
- ステート(状態)レス(ない)= やり取りが1回ごとに完結する。
- サーバはクライアントのセッション情報を保持しない。
ステートレスなAPIのイメージ
いらっしゃいませ。今日はどんな感じにしますか?
前髪は長め、サイドと後ろはすっきりした感じでお願いします。
ヘッドスパはどうですか?
前髪は長め、サイドと後ろはすっきりした感じ、ヘッドスパをお願いします。
以上でよろしいですか?
前髪は長め、サイドと後ろはすっきりした感じ、ヘッドスパをお願いします。以上です。
かしこまりました。
ステートフルなAPIのイメージ
いらっしゃいませ。今日はどんな感じにしますか?
前髪は長め、サイドと後ろはすっきりした感じでお願いします。
ヘッドスパはどうですか?
ヘッドスパもお願いします。
以上でよろしいですか?
以上です。
かしこまりました。
ステートレスのメリット・デメリットは以下の通り
メリット | デメリット |
---|---|
セッション情報を保持する必要が無いためサーバー資源(メモリ、CPU等)を有効活用できる | 毎回APIの処理に必要な情報を全て詰める必要があり、トラフィックを圧迫する(結果的にレスポンスが遅くなりリスクあり) |
・スケーラビリティのあるシステムになる ・サーバーを増やせば増やすほど、スループット(単位時間あたりの処理データ量が向上する |
統一インターフェース
- あらかじめ定義・共有された方法でやり取りされる
- HTTPリクエスト:GET/POST/PUT/DELETEなど
- データの形式:JSON/XMLなど
アドレス可読性
- アドレス可能性は、全ての情報が一意なURI(識別子)を持っていて、提供する情報をURIで表現できることです。
接続性
- 接続性は、やりとりされる情報にはハイパーリンクを含めることができる、というものです。
- 1つのリンクから別の情報にリンク(接続)することができて、RESTfulなシステム同士なら円滑に情報連携を行うことができます。