REST APIは、ユーザー、問題、注文のようなリソースを中心にWeb APIを設計する一般的な方法です。各リソースにはURLが割り当てられ、GETPOSTPATCHDELETE などの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 OK201 Created404 Not Found のようなステータスコードと、結果を表すデータが含まれます。

重要な条件のひとつがステートレス性です。RESTでは、各リクエストにそのリクエストを処理するために必要な文脈が含まれているべきです。これはサーバーが一切データを保存しないという意味ではありません。現在のリクエストを理解するために、過去のリクエストに依存した隠れた会話状態を必要としない、という意味です。

REST APIの例:数学の練習アプリ

代数の問題と生徒の解答試行を保存する数学の練習アプリを考えてみましょう。

問題 4242 を取得するには、クライアントは次のように送るかもしれません。

問題の解き方でお困りですか?

問題をアップロードすると、検証済みのステップバイステップ解答が数秒で届きます。

GPAI Solver を開く →