<目次>
(1) RESTful APIとは?概要や6つの原則についてご紹介
(1-1) RESTful APIの概要
(1-2) RESTの6つの原則
(1) RESTful APIとは?概要や6つの原則についてご紹介
(1-1) RESTful APIの概要
●「RESTful API」とは?
「RESTful API」は「HTTPリクエスト」を活用してデータを操作するためのAPI(アプリケーションインターフェイス)に関するアーキテクチャ方式です。RESTful APIではGET、PUT、POST、DELETE等のリクエストでデータを操作します。それぞれをSQLの構文と対応付けるなら、おおよそ次のような対応になります。
(表1)
HTTPリクエストの種類 |
対応するSQLの構文 |
GET |
SELECT |
PUT |
UPDATE |
POST |
INSERT |
DELETE |
DELETE |
>目次にもどる
●WebサービスにおけるAPIとは?
APIの中でも特に「Webサービス」(Webサイト等)におけるAPIの実態は、外部のソフトウェアからアクセスし、利用可能な機能を提供するために、外部公開するメソッド並びにそのプログラムです。開発者はそのAPIを通じて、対象サービスが外部提供する機能を自身のソフトウェアの中で利用する事ができます。
(図111)APIのイメージ
●なぜRESTという名前?
また、「RESTful API」はRESTアーキテクチャの制約に則り作られるため、名前に「REST」と付いています。RESTは「REpresetational State Transfer」の略で、分散ハイパーメディアシステム(≒テキスト・データ・ビデオ・画像など様々なメディアを組合せ、ネットワーク越しに複数のサーバを組み合わせて構築したシステム)を構築するためのアーキテクチャ方式です。
(1-2) RESTの6つの原則
一般的にRESTful APIを設計する際に守るべきとされている、6つのポイントを列挙します。
●①クライアント-サーバ制約
クライアント(機能を利用する側)とサーバ(機能を提供する側)は、依存する事なくそれぞれ独立し、お互いに影響なく改良が出来るような構造にするべきという考え方です。
例えば、ブラウザやスマホ画面の見え方(クライアント側)を改良する際に、データ構造など(サーバ側)に影響が出ないようにする、といった具合です。
なので、基本的にクライアント側が持つ情報はAPIにアクセスするためのURIのみで、他の方法ではサーバにアクセス出来ません。逆に、サーバ側は要求されたデータをHTTPプロトコルで返却する以外はクライアント側に対して変更を加えません。
(図121)イメージ図
●②ステートレス
RESTful APIは「ステートレス」です。クライアント・サーバ間の要求/応答の組をそれぞれ独立である、つまりそれ以前の要求/応答との対応関係がないプロトコルです。そのため、たくさん来る要求/応答の組の前後関係の紐づき(例:同一人物による依頼か?)の情報は持っておらず、その単独のリクエスト内に、処理完結に必要な情報を全て保持する必要があります。
また、処理を行う際にはサーバ上で保持するセッションの情報などに依存せず、各リクエスト内で処理に必要な情報(APIキー、アクセストークン、ユーザーIDなど)を保持します。
(図122)イメージ図
●③キャッシュ(クライアント側)
RESTful APIでは、大量のコールによりオーバーヘッド(システム負荷とそれに伴い生じる余分な処理時間)が発生しうるため、クライアント側でのキャッシュ機能を利用して、通信のオーバーヘッドを減らすように設計する必要があります。
キャッシュの発動有無は、レスポンスの中でクライアントに対する指示情報を持っており、一定期間保持したり、あるいはリアルタイムの情報が必要な場合はキャッシュしない、といった制御が可能になります。キャッシュを有効活用する事で、APIコールやサーバ内のリソース(CPUなど)の消費を抑え、かつユーザーにも最速の応答をする事にも繋がります。
●④統一インターフェイス
同じリソース(Web上に存在するデータ)に対するAPIアクセスは、全て同じ形式に統一されている必要があります(一意なURIでアクセスが可能)。また、httpプロトコルのメソッド(DELETE、PUT、GET、POSTなど)を用いてのみ、データを操作可能にします。
(図123)
●⑤レイヤーシステム
複数の役割を持つサーバを組み合わせる事でAPIを実現するアーキテクチャの事を「レイヤーシステム」と呼びます。
例えば、「要求を受けるレイヤー」「応答を返すレイヤー」「セキュリティ処理を行うレイヤー」などに分けて、尚且つそのレイヤー構造がクライアント側からは分からないようにします。
●⑥コード・オンデマンド
通常、REST APIは静的なデータ(XML形式やJSON形式(→★))を応答として返却しますが、しかし場合によっては動的なプログラム(Java Appletなど)を返却する事も可能です。