REST APIは、ユーザー、問題、注文のようなリソースを中心にWeb APIを設計する一般的な方法です。各リソースにはURLが割り当てられ、GET、POST、PATCH、DELETE などのHTTPメソッドが、クライアントがサーバーに何をしたいのかを伝えます。
RESTは Representational State Transfer の略です。実際には、クライアントがHTTPリクエストを送り、サーバーがリソースの表現を返し、各リクエストはそれ単体で意味が通るべきだという考え方です。多くのREST APIはJSONを返しますが、JSONを使っているだけでAPIがRESTfulになるわけではありません。
REST APIの意味:リソースで考える
RESTを最も手早く理解するには、動詞ではなく名詞で考えることです。
システムに問題、学生、解答試行があるなら、それらはリソースになりえます。リソース指向のAPIでは、/api/problems/42 や /api/attempts/9001 のようなURLを使う傾向があります。
そして、どのような操作が行われるかはHTTPメソッドが示します。
GETはリソースを取得するPOSTは新しいリソースを作成するPUTはリソースを置き換えるPATCHはリソースの一部を更新するDELETEはリソースを削除する
この分離があるからこそ、RESTは見通しがよくなります。URLは「何を扱っているか」を示し、メソッドは「何をしたいか」を示します。
REST APIのリクエストはどう動くか
典型的な流れでは、ブラウザ、モバイルアプリ、または別のサービスがサーバーにリクエストを送ります。リクエストにはURL、HTTPメソッド、必要に応じたヘッダー、そして場合によってはボディが含まれます。
サーバーはそのリクエストを読み取り、処理を実行し、レスポンスを返します。レスポンスには通常、200 OK、201 Created、404 Not Found のようなステータスコードと、結果を表すデータが含まれます。
重要な条件のひとつがステートレス性です。RESTでは、各リクエストにそのリクエストを処理するために必要な文脈が含まれているべきです。これはサーバーが一切データを保存しないという意味ではありません。現在のリクエストを理解するために、過去のリクエストに依存した隠れた会話状態を必要としない、という意味です。
REST APIの例:数学の練習アプリ
代数の問題と生徒の解答試行を保存する数学の練習アプリを考えてみましょう。
問題 を取得するには、クライアントは次のように送るかもしれません。