Web技術の基礎
RESTの考え方に沿ったWeb APIの設計として、適切なものはどれか。
- A/getUser?id=42 や /deleteUser?id=42 のように、操作の名前をURLに入れ、すべてGETで送る
- B利用者の資源を /users/42 のようなURLで表し、取得はGET、削除はDELETEのように、操作をHTTPのメソッドで表す
- Cサーバがクライアントごとに前のリクエストの内容を覚えておき、次のリクエストはそれを前提にした短い命令だけを送る
答えと解説を見る
正解:B. 利用者の資源を /users/42 のようなURLで表し、取得はGET、削除はDELETEのように、操作をHTTPのメソッドで表す
RESTでは、扱う対象を資源(リソース)としてURLで表し、その資源への操作を、GET(取得)、POST(作成)、PUTやPATCH(更新)、DELETE(削除)のようなHTTPのメソッドで表します。例えば GET /users/42 で資源を取得し、POST /users で新しい利用者を作ると、サーバは 201 Created と新しい資源のURLを返します。各リクエストは、処理に必要な情報をすべて含むステートレスなものにします。削除のような操作をGETで行うと、リンクの先読みやクローラのアクセスだけでデータが消えるおそれがあります。
- A. 操作の名前をURLに入れる設計は、RESTの考え方とは違います。また、削除をGETで行うと、先読みなどで意図せず実行されるおそれがあります。
- B. 正しい。資源をURLで、操作をHTTPのメソッドで表します。
- C. RESTでは各リクエストを独立させ、サーバが前のリクエストを前提にしないステートレスな設計にします。