Webを支える技術(HTTPメソッド)


20181115

やったこと

Webを支える技術を読む
HTTPメソッドの章

気になった事、メモ

GET POST以外のメソッドについて

なぜ html の form は PUT / DELETE をサポートしないのか?

とても興味深い👓

Railsではmethod: を使い_methodパラメータでPATCH・PUT・DELETEメソッドを動かす

form_tag(search_path, method: "patch")

上のコードから以下の出力が得られる

<form action=“/search” method=“post”>
  <input name=“_method” type=“hidden” value=“patch” />

べき等と安全

べき等 👉 ある操作を何回繰り返しても同じ結果になること

安全 👉 操作対象のリソースを変化させないこと

メソッド べき等 安全
GET, HEAD  ⭕
PUT, DELETE  ⭕
POST  ❌

実装のコツ

  • GETにリソースの取得以外の機能を付与させない

  • POST他のメソッドで出来ることをさせない。他のメソッドが持つべき等や安全が利用出来ない

  • 時間や状況で指し示すリソースが変化するリソースは、更新や削除できない様にする

  • PUT 変更内容は完全な表現にする。

PUTがべき等でなくなる例

変更内容 結果 べき等
100 +50 100+(50*n) 👈PUTを繰り返すと値が変化し続ける
100 150 150

所感

HTTPメソッドを数種類に限定し、統一インターフェイスにすることでシンプルさ、拡張発展性を持った事がWebが発展した要因の一つとの事。Webではないけれど、VHSとベータ、DVDとブルーレイなど規格が乱立するとユーザーはもとより、ソフト・ハードを作る人も混乱して発展しにくくなるから規格をシンプルに統一することは大事だなと感じた。

Webは規格にのっとればどのハードでもリソースを利用できる。スバラシイ。