web-dev-qa-db-ja.com

HTTPリクエスト本文とはどういう意味ですか?

POST and get methods here のようなものを読むと、「post methodを使用するとHTTP要求Bodyが使用されます。 。?

HTTP Body Dataは、ヘッダーがある場合、ヘッダーの直後に続くHTTPトランザクションメッセージで送信されるデータバイトです(HTTP/0.9の場合、ヘッダーは送信されません)。

ほとんどのHTTPリクエストは、ボディのないGETリクエストです。ただし、プロキシコードに適切にストレスをかけ、そのようなリクエストで動作するさまざまなフックをテストするには、ボディを使用してリクエストをシミュレートすることが重要です。ボディを持つほとんどのHTTP要求は、POSTまたはPUT要求メソッドを使用します。

メッセージ本文

HTTPメッセージのメッセージ本文部分はオプションですが、使用可能な場合は、要求または応答に関連付けられたエンティティ本体を運ぶために使用されます。エンティティボディが関連付けられている場合、通常、Content-TypeおよびContent-Lengthヘッダー行は、関連付けられているボディの性質を指定します。

メッセージ本文は、実際のHTTPリクエストデータ(フォームデータやアップロードなどを含む)およびサーバーからのHTTP応答データ(ファイル、画像などを含む)を運ぶものです。以下は、メッセージ本文の簡単なコンテンツです。

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

HTTPメッセージと本文の詳細については、 w3org link を参照してください

42
Mazzu

ボディは大きく2つのカテゴリに分けられます:

  1. Content-Type および Content-Length の2つのヘッダーで定義された1つの単一ファイルで構成される単一リソース本体。
  2. マルチリソースボディ 、マルチパートボディで構成され、それぞれが異なるビットの情報を含んでいます。通常、これは HTML Forms に関連付けられています。

以下 <form>

<form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
  <label>Name: <input name="myTextField" value="Test"></label>
  <label><input type="checkbox" name="myCheckBox"> Check</label>
  <label>Upload file: <input type="file" name="myFile" value="test.txt"></label>
  <button>Send the file</button>
</form>

このHTTPメッセージ本文を送信します。

POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465

-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField"

Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox"

on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain

Simple file.
-----------------------------8721656041911415653955004498--

出典:

では、バックエンド(サーバー)でこのデータにどのようにアクセスしますか?
異なるサーバー言語(Go-lang、Node.js、PHP、Python、Rubyなど)には、http body から http post request。 Node.jsでは、解析ミドルウェア関数である body-parser を使用するのが一般的です。

// Node.js
⋮
var data1 = req.body.myTextField;
var data2 = req.body.myCheckBox;
var data3 = req.body.myFile;
⋮
1
August Jelemson