HTTPメッセージの構造、要求方法及び応答コード


HTTP情報はHTTPメッセージから!


HTTPメッセージの構成



  • Http通信で交換される情報は、通常、Httpメッセージと呼ばれる
  • 2種類のリクエストメッセージとスポンサーメッセージが存在する

  • Httpメッセージは복수행のデータからなるテキスト文字列の形式で、おおよそ메시지 헤더메시지 바디からなり、それぞれ개행 문자(CR+LF)
  • メッセージヘッダを先頭行とヘッダブロック(フィールド)に分けることができる
  • メッセージヘッダ:サーバとクライアントが処理しなければならない要求または応答の内容と属性を定義する
  • HTTP通信に必要なすべての付加情報がヘッダに記載されている
  • ex)メッセージ本体のサイズ、認証、クライアント情報、キャッシュ管理情報等
  • メッセージ本体:転送中のデータを含む
  • ここでは使用可能なすべてのバイトで表されるデータをHTML文書やjson形式のデータから画像やビデオに転送できる

  • リクエストヘッダの最初のスタートラインは리퀘스트 라인(요청 라인)からなる
  • 要求線(要求線):要求に用いる方法(GET、POST等)、要求URI及び使用するHTTPバージョン情報を指示する
  •     GET/search HTTP/1.1 

  • スポンサーヘッダのスタートラインは상태 라인(응답 라인)で構成されている
  • ステータスライン(応答線):リース結果を示すステータスコードと説明、および使用するHTTPバージョン情報、
  •     HTTP/1.1 200 OK
  • keep-aliveヘッダ:以下に示すように、接続を継続することを示す(HTTP 1.1より動作がデフォルト)
  •     Connection:Keep-Alive
        Keep-Alive: timeout=5, max=1000
  • 基本的にHTTP通信はTCP通信をベースとしており、TCP通信は一旦伝送されると接続が切断され、HTTPも伝送終了後に接続が切断され、以降のことは気にしない
  • そこでKeep-Aliveヘッダを使用してこれらの問題を阻止し、特定期間内の最大要求数を示す
     
  • よく使われるHTTPメソッドとレスポンスコード


  • HTTPメソッド
  • GET:サーバから特定情報(または文書)を取得するためのもの
  • HEAD:GETの類似動作であるが、サーバの応答はタイトルのみであり、本文は存在しない
  • リソースの存在や変更などの情報だけが必要な場合は、本文にはリソースは含まれておらず、ヘッダをチェックするだけで十分
  • ただしサーバの開発に際しては、HEAD要求に応答したヘッダとGET要求に応答したヘッダとの整合性に常に注意すること.
  • POST:サーバが処理する必要があるデータは、通常、サーバに新しいデータを入力するために使用される
  • メッセージ本体にデータが含まれているため(ex.要求json)、ハッシュメソッドを使用すると本文が現れる
  • PUT:サーバに存在するデータの変更(新規ドキュメント作成または置換要求の本文)
  • 同じく本文が存在し、POSTとは異なる멱등성(Idempotence)乙支路
  • PATCH:リソースを変更する方法はPUTと同じであるが、一部のリソースのみを変更する
  • PUTでは、一部のリクエストのみを送信すると、残りはデフォルト値に変更されます.
  • 未送信のデータがnullに変更される可能性があるため、変更されていないデータも全て転送する必要がある
  • 逆にPATCHはリクエスト本文の一部のみ修正
  • DELETE:サーバから何らかの情報(または文書)を削除
  • ただしサーバが要求を無視する可能性があるため、クライアントが常に正常に削除することは保証できない

  • ステータスコード
  • 100-19:情報
  • 200-299:成功(200 OK)
  • 300-399:リダイレクト
  • 400-499:クライアントエラー(404ノードFound)
  • 500-599:サーバエラー(500内部サーバエラー)