kmmkの雑種系日記

学習まとめです。

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

6.1 HTTPの重要性

コンピューターで扱えるデータならなんでも転送できるから最強

6.2 TCP/IP

  • IPは、データを送り出すことだけ保証
  • TCPは、最終地点まで転送されることを保証

6.3 HTTPのバージョン

  • 0.9 - GETのみ
  • 1.0 - ヘッダ追加・GET以外のメソッド追加
  • 1.1 - 持続的接続・チャンク転送・acceptヘッダ

チャンク転送 引用:https://www.playframework.com/documentation/ja/2.0.x/JavaStream

今のところ、ストリーミングを始める前にコンテンツの長さを計算することができるため、うまくファイルの内容をストリーミングすることができていました。しかし、コンテンツのサイズが事前にわからないような動的に生成されるコンテンツをストリーミングする場合はどうでしょうか? このような種類のレスポンスを返すためには、 チャンク転送エンコーディング を利用します。


長所:動的に生成されるコンテンツ(ライブ配信とか?)は、いくつかのチャンクにわけて転送するようにできる

短所:web ブラウザがコンテンツサイズを知らないため、ダウンロードプログレスバーを正しく表示できない


acceptヘッダ

引用:https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Accept

クライアントが理解できるコンテンツタイプを MIME タイプで伝えます。

MIME:文書、ファイル、またはバイト列の性質や形式を示す標準

6.6 HTTPメッセージ

リクエス

GET /test HTTP/1.1  <- リクエストライン   
Host: example.jp    <- ヘッダ

リクエストライン:メソッド+リクエスURIプロトコルバージョン

レスポンス

HTTP/1.1 200 OK <-ステータスライン
Content-Type: application/xhtml+xml; charset=utf-8

HTTPはステートレス

  • ステートレス:サーバーがリクエストを全部覚えておく(簡潔・サーバー負担)
  • ステートフル:サーバーがリクエストを覚えない(冗長・送信するデータ量の増加)

HTTPメソッド

メソッド

  • GET:リソースの取得
  • POST:追加など
  • PUT:作成・更新
  • DELETE:削除

——————>ここからあまり理解できていない

  • HEAD:ヘッダの取得
  • OPTIONS:サポートしてるメソッドの取得
  • TRACE:試験用
  • CONNECT:トンネル接続への変更
//request
OPTIONS /list HTTP/1.1
Host: example.jp

//response
HTTP/1.1 200OK
Allow: GET,HEAD,POST

CRUD(データ操作の基本)

  • Create:作成(POST / PUT)
  • Read:読み込み(GET)
  • Update:更新(PUT)
  • Delete:削除(DELETE)

ステータスコード

  • 200 OK:リクエスト成功
  • 201 Created:リクエスト成功+リソースの作成