yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY70>WEBを支える技術を読んで

\ Follow me!! /

f:id:yujiro0320:20190415152250p:plain

学習状況

●学習日数 70日 

●学習時間(本日) 1.0時間

●累計学習時間 190.0時間

●一日あたりの平均学習時間 2.71時間 

8つしかないHTTPメソッドについて

ただでさえ少ないメソッドに対して、よく使うのはこのうち6つです。

f:id:yujiro0320:20190429231444p:plain

HTTPメソッドとCRUD(クラッド)

以下のように対応しています。 READがGETと対応している以外はすんなり頭に入った。

f:id:yujiro0320:20190429231653p:plain  

GET

一番頻度の高いメソッド。 リソースの取得で使用する。

POST

あるリソースに対する子リソースの作成

f:id:yujiro0320:20190429232417p:plain 

リクエストでは、はhttp://example.jp/listに対して新しいリソースを作るようにPOSTで指示をしています。 レスポンスではhttp://example.jp/list/item5に子リソースを生成したとなっています。

リソースへのデーター追加

新たな子リソースを作るのでなく、既存のリソースにデーターを追加する。 レスポンスでは createdでなくOKとかえって来ている。 URIだけでは、POSTの挙動はわからないので、WEBサービスやWEB APIの仕様で表現する。

他のメソッドでは対応できない処理

このような検索ワードが制限を超えるような文字の場合

f:id:yujiro0320:20190429233855p:plain

GETではURIに含まれるキーワードをPOSTでは、リクエストボディに格納できるのが特徴。他のメソッドでは実現できない処理を可能とする特徴がある。

PUT

リソースの更新と作成

リソースの更新

ボディにリソースの結果を入れても、入れなくてもレスポンスを返す事ができる、 入っていない場合は、204 NO CONTENTとなる。

リソース作成時のPOSTとPUTの使い分け

PUTは存在しないURIへのリクエストである。 原則はリソース作成はPOSTで行い、URIもサーバで決定する設計が望ましい。 但し、ウィぺディアのような、クライアントが決めのがそのままURIになる場合はPUTが適している。 よーするに、サーバー側で決めないってこと。

DELETE

f:id:yujiro0320:20190430105702p:plain

基本的にはボディを持たない。

HEAD

GETはリソースのデータを取得するメソッド。HEADはリソースのヘッダーの情報を取得するメソッド。

OPITION リソースがサポートしているメソッドの取得

f:id:yujiro0320:20190430110115p:plain

POSTでPUTとDELETEを活用する方法

2点方法がある。

methodパラメーターを使用

method-Overrideヘッダこのヘッダ

このヘッダをみてPUTとして扱う事になる。

条件つきリクエス

ヘッダの更新日時とメソッドを組み合わせる事で 更新するタイミングをサーバーで実装が選択できる仕組みの事をさす。

べき等性と安全性

べき等とは、何回操作を行っても同じ結果を返す事を指す。 安全性とは操作対象のリソースを変化させない事を指す f:id:yujiro0320:20190430113935p:plain

しかし、GETを誤った使い方をしているWEBAPIも目撃する事が多くある。 GETで取得するはずのURIに動詞などが入っているとおかしい。

メソッドを正しく使用する事が求められる。 PUT、DELETEにもべき等を実現できない使い方の悪い例などが見られる。