Web技術の基礎

RESTの考え方に沿ったWeb APIの設計として、適切なものはどれか。

  1. A/getUser?id=42 や /deleteUser?id=42 のように、操作の名前をURLに入れ、すべてGETで送る
  2. B利用者の資源を /users/42 のようなURLで表し、取得はGET、削除はDELETEのように、操作をHTTPのメソッドで表す
  3. 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では各リクエストを独立させ、サーバが前のリクエストを前提にしないステートレスな設計にします。
この分野を解く 分野ページへ

Web技術の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Web技術の基礎のほかの問題

  1. ブラウザで https://www.example.com:8443/docs/guide.html?lang=ja#install を開いた。このURLのうち、サーバへ送るリクエストには含まれず、ページを読み込んだ後にブラウザの中だけで使われる部分はどれか。
  2. URLのクエリに日本語の「あ」を入れるため、この文字をUTF-8で表したバイト列(E3 81 82)を、パーセントエンコーディングで表す。結果として正しいものはどれか。
  3. チャットのアプリで、新しいメッセージをサーバからブラウザへすぐに届けたい。WebSocketの説明として正しいものはどれか。
  4. オンライン決済のサービスで支払いが完了したことを、加盟店のサーバがすぐに知りたい。決済サービスが、あらかじめ登録された加盟店のURLへHTTPのPOSTで通知を送る方式(Webhook)の説明として、正しいものはどれか。
  5. ブラウザで使われるDOM(Document Object Model)の説明として、正しいものはどれか。