<DAY70>WEBを支える技術を読んで
学習状況
●学習日数 70日
●学習時間(本日) 1.0時間
●累計学習時間 190.0時間
●一日あたりの平均学習時間 2.71時間
8つしかないHTTPメソッドについて
ただでさえ少ないメソッドに対して、よく使うのはこのうち6つです。
HTTPメソッドとCRUD(クラッド)
以下のように対応しています。 READがGETと対応している以外はすんなり頭に入った。
GET
一番頻度の高いメソッド。 リソースの取得で使用する。
POST
あるリソースに対する子リソースの作成
リクエストでは、はhttp://example.jp/listに対して新しいリソースを作るようにPOSTで指示をしています。 レスポンスではhttp://example.jp/list/item5に子リソースを生成したとなっています。
リソースへのデーター追加
新たな子リソースを作るのでなく、既存のリソースにデーターを追加する。 レスポンスでは createdでなくOKとかえって来ている。 URIだけでは、POSTの挙動はわからないので、WEBサービスやWEB APIの仕様で表現する。
他のメソッドでは対応できない処理
このような検索ワードが制限を超えるような文字の場合
GETではURIに含まれるキーワードをPOSTでは、リクエストボディに格納できるのが特徴。他のメソッドでは実現できない処理を可能とする特徴がある。
PUT
リソースの更新と作成
リソースの更新
ボディにリソースの結果を入れても、入れなくてもレスポンスを返す事ができる、
入っていない場合は、204 NO CONTENT
となる。
リソース作成時のPOSTとPUTの使い分け
PUTは存在しないURIへのリクエストである。 原則はリソース作成はPOSTで行い、URIもサーバで決定する設計が望ましい。 但し、ウィぺディアのような、クライアントが決めのがそのままURIになる場合はPUTが適している。 よーするに、サーバー側で決めないってこと。
DELETE
基本的にはボディを持たない。
HEAD
GETはリソースのデータを取得するメソッド。HEADはリソースのヘッダーの情報を取得するメソッド。
OPITION リソースがサポートしているメソッドの取得
POSTでPUTとDELETEを活用する方法
2点方法がある。
methodパラメーターを使用
method-Overrideヘッダこのヘッダ
このヘッダをみてPUTとして扱う事になる。
条件つきリクエスト
ヘッダの更新日時とメソッドを組み合わせる事で 更新するタイミングをサーバーで実装が選択できる仕組みの事をさす。
べき等性と安全性
べき等とは、何回操作を行っても同じ結果を返す事を指す。 安全性とは操作対象のリソースを変化させない事を指す
しかし、GETを誤った使い方をしているWEBAPIも目撃する事が多くある。 GETで取得するはずのURIに動詞などが入っているとおかしい。
メソッドを正しく使用する事が求められる。 PUT、DELETEにもべき等を実現できない使い方の悪い例などが見られる。