HTTP Protocolとは
HTTPはHypertext Transfer Protorolの略. Web ブラウザと Web サーバの間でHTML などのコンテンツの送受信に用いられる通信プロトコル.
ref. Hypertext Transfer Protocol - Wikipedia
HTTP Header
💡application/jsonにおけるAccept と Content-Typeの違い
AcceptはClientがどんなデータを処理できるかを示す.
Content-Typeはどんな形式のデータを送信したかを示す.
- Accept
- {“Accept”: “application/json”}
- サーバがクライアントにデータをレスポンスするときの情報.
- 特に指定がなければ通常text/textを好む慣習がある.
- Content-type
- {“Content-Type” “application/json”}
- GET Requestでは不要, Post Requestでは必須.
- 具体的には POST requestにおけるbodyのデータ形式を指定.
🔖HTTP GET
クエリ文字列
WebブラウザなどがWebサーバに送信するデータを送信先を指定するURLの末尾に特定の形式で表記したもの.
以下は全て同じ.
- クエリストリング(query string)
- GETパラメータ(GET parameter)
- URLパラメータ
- URLクエリパラメータ
URLの末尾に「?」(クエスチョンマーク)を付け, 続けて「名前=値」の形式で内容を記述する. 値が複数あるときは「&」(アンパサンド)で区切り「?名前1=値1&名前2=値2&名前3=値3」のように続ける.
🔖HTTP POST
リクエストボディ(requestBody)
HTTPリクエストメッセージボディ.
POSTリクエストにbodyパラメータを添えるときに必要.
Content-typeによる形式の指定が必要. これはHTTPヘッダのフィールドとして書く.
{"Content-Type" "application/json"}
🔖HTTP PUT
リソースの新規作成ではなく, 既存リソースを置き換えるニュアンス.
💡HTTP POSTとPUTの違いは?
データの意図が違う. ニュアンスの違いでどちらをつかうかは開発者のポリシーによる.
PUT はべき等であり, 呼び出し回数が 1 回でも複数回でも同じ効果になる(副作用がない). 一方で, POST は連続して同じものを実行すると注文を複数回渡してしまうなどの追加の影響が発生する可能性がある.
🔖HTTP HEAD
- headers情報のみを取得する.
- HEAD - HTTP | MDN
リソースの最終更新時刻を取得するには?
Last-Modifiedを参照する.
curl -I (url)
🔖HTTP Status Code
HTTP ステータスコード.HTTP ステータスコード - Wikipedia
1xx | Informational | 情報 |
---|---|---|
2xx | Success | 成功 |
3xx | Redirection | リダイレクション |
4xx | Client Error | クライアントエラー |
5xx | Server Error | サーバエラー |
204: No Content
No ContentとはBodyが空であることを示す. リクエスト自体は成功.
4xx
📝HTTP/2
2015に登場したHTTPプロトコル. 1996に仕様が定義されたHTTP1.1と比べて16年ぶりのアップデート.
HTTP/1.xとの違い
バイナリ形式
HTTP/1.xはテキスト形式でデータがやりとりされていたが, /2ではバイナリ形式でやり取りされる.
1つのTCP接続と多重ストリーム
/1.xでは1つのTCP接続でひとつの通信しかできなかった. ひとつのリクエストに対して1つのレスポンスということで処理はシンプルだったが並列な処理ができなかった.
/2だとストリームという機構が作られ, 仮想の接続をつくることで同時並行で多重通信ができる(リクエスト/レスポンスを処理).
HTTPヘッダを圧縮
HTTPヘッダーで必要な差分データだけを送信することでHTTPヘッダを圧縮.
Links
🔖HTTP debugger
HTTPに特化したプロファイラ.
- 🔧DevtoolsのNetwork.