Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

HTTPリクエストボディ(エッチティーティーピー リクエスト ボディ)とは | 意味や読み方など丁寧でわかりやすい用語解説

HTTPリクエストボディ(エッチティーティーピー リクエスト ボディ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

HTTPリクエストボディ (エイチティーティーピー リクエスト ボディ)

英語表記

HTTP request body (エイチティーティーピー リクエスト ボディ)

用語解説

HTTPリクエストボディは、WebブラウザなどのクライアントがWebサーバーへデータを送信する際に使用される、HTTPリクエストメッセージの一部である。HTTPはクライアントとサーバーが情報をやり取りするための通信規約であり、クライアントからの要求はHTTPリクエストと呼ばれる。このリクエストは主に、リクエストの目的を示す「スタートライン」、付加的な情報を含む「ヘッダー」、そして必要に応じて「ボディ」の三つの部分から構成される。HTTPリクエストボディは、この中で最も大きなデータを格納できる部分であり、サーバーに伝えたい具体的なデータ本体そのものを入れるための領域である。すべてのHTTPリクエストにボディが含まれるわけではなく、主にサーバー上のリソースを作成したり更新したりするなど、クライアントからまとまった量のデータを送る必要がある特定の状況で利用される。例えば、ウェブサイトのフォームに入力した内容や、アップロードするファイルなどがボディに格納される代表的なデータである。

HTTPリクエストボディの詳細を理解するには、その役割、利用される場面、そして格納されるデータの形式について知ることが重要である。まず、ボディの最も重要な役割は、URLに含めるには不適切な、あるいは含めることができないデータをサーバーに転送することである。URLの末尾に付加するクエリパラメータでもデータを送ることはできるが、こちらは長さの制限があったり、URLにデータが直接表示されてしまうためセキュリティ上の懸念があったり、バイナリデータのような複雑な情報を扱えなかったりする。これに対し、リクエストボディはこうした制約がなく、大量のテキストデータ、構造化されたデータ、画像や動画などのバイナリファイルを安全かつ効率的に送信するために設計されている。

リクエストボディが主に使用されるのは、HTTPメソッドの中でもPOST、PUT、PATCHといったデータを書き換える性質を持つものである。POSTメソッドは、サーバーに新しいリソースを作成する際に用いられる。例えば、SNSへの新規投稿や、ECサイトでの会員登録などがこれにあたり、投稿内容や登録情報といった作成に必要なデータがリクエストボディに格納されてサーバーへ送られる。PUTメソッドは、既存のリソースを完全に置き換える、つまり全体を更新するために使われる。ユーザープロフィールの全項目を一度に更新する場合などに、更新後の新しいプロフィール情報一式がボディに入れられる。PATCHメソッドは、既存のリソースの一部だけを修正する際に用いられる。例えば、ユーザーの電話番号だけを変更する場合、変更する項目とその新しい値だけをボディに含めて送信する。一方で、サーバーから情報を取得するだけのGETメソッドや、リソースを削除するDELETEメソッドでは、原則としてリクエストボディは使用されない。

リクエストボディに格納されるデータは、どのような形式でエンコードされているかをサーバーに伝える必要がある。この情報を示すのが、HTTPヘッダーに含まれる「Content-Type」フィールドである。サーバーはこのヘッダーの値を見て、ボディのデータを正しく解釈する。代表的なContent-Typeにはいくつか種類がある。ウェブフォームの送信で古くから使われているのが「application/x-www-form-urlencoded」で、これは入力項目を「キー=値」の形式にし、「&」で連結した文字列である。ファイルアップロードを伴うフォームでは、「multipart/form-data」が使われる。この形式は、リクエストボディを複数のパートに分割し、テキストデータとファイルのようなバイナリデータを混在させて一度に送信することができる。近年のWeb API通信で最も広く利用されているのが「application/json」である。JSONは軽量で人間にも機械にも読みやすいデータ形式であり、複雑な階層構造を持つデータを柔軟に表現できるため、多くのシステム間連携で標準的に採用されている。その他、XML形式のデータを送るための「application/xml」や、単純なテキストを送る「text/plain」など、用途に応じて様々なデータ形式が使い分けられる。また、「Content-Length」ヘッダーもボディと密接に関連しており、ボディ部分のデータの大きさをバイト単位で示す。サーバーはこの値をもとに、どこまでデータを読み込めばリクエストボディが終了するのかを判断する。このように、HTTPリクエストボディは、ヘッダーと連携しながら、クライアントからサーバーへの多様なデータ送信を実現する上で、極めて重要な役割を担っている。

関連コンテンツ