11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【エンジニア初学者向け】HTTP リクエストの Query と Body を正しく理解する

Last updated at Posted at 2025-05-06

はじめに

こんにちは、みなさん!今日はプログラマーとして日々格闘している HTTP リクエストについて、特に Query と Body の違いについてお話ししたいと思います。

最近、新人エンジニアから「GET リクエストと POST リクエストの違いがよくわからない」という質問を受けたんですよね。特に「どんな時に Query パラメータを使って、どんな時に Body を使うべきなの?」という疑問。これって結構重要なポイントなんですよ。

HTTP リクエストの基本構造

まずは基本から!HTTP リクエストって何でしょうか?簡単に言うと、ブラウザなどのクライアントからサーバーに送る「お願い」みたいなものです。リソースを取得したり、何かの操作を実行したりするために使います。

典型的な HTTP リクエストは主に3つの部分から構成されています:

  • URL:リクエスト先のリソースの場所
  • ヘッダー(Headers):コンテンツタイプや認証情報などの付加情報
  • クエリパラメータ(Query)とリクエストボディ(Body):データを送るための部分

この中で、特に混乱しやすいのが Query と Body の使い分けですよね。

Query パラメータとは?

Query(クエリ) パラメータは URL の一部として、シンプルなデータを送るために使われます。URL の ? マークの後ろに付けて、& で区切って複数のパラメータを指定できます。

位置:URL の末尾にあります。例えば https://example.com/search?query=apidog&limit=10 という URL では、querylimit が Query パラメータです。

用途:サーバーからデータを取得する時によく使います。検索機能、ページング、ソートなどに最適です。

特徴

  • キーと値のペア:常にキーと値のペアで表現されます
  • 長さ制限:URL の長さには制限があるので、大量のデータには向いていません

実例
例えば、ECサイトで商品を検索する時のURLはこんな感じになります:

https://example.com/products?category=electronics&price_min=100&price_max=500

Query-1.png

これで「電子製品カテゴリーで、価格が100〜500の範囲の商品」を検索できるわけです。シンプルでしょ?

Body(リクエストボディ)とは?

Body は HTTP リクエストの本体部分で、大量のデータを送るために使われます。URL には表示されず、リクエストの中身として送信されます。

位置:HTTP リクエストの本体部分にあり、URL には表示されません。

用途:複雑なデータを送る時に使います。フォームデータの送信、ファイルのアップロード、JSON データの送信などに最適です。

特徴

  • 多様なフォーマット:JSON、XML、フォームデータなど様々な形式をサポート
  • 大容量:URL の長さ制限を受けないので、大量のデータを送れます

実例
ユーザー登録フォームを送信する場合、POST リクエストの Body は以下のような JSON データになるでしょう:

{
  "username": "kennichi",
  "password": "securepassword123",
  "email": "kennichi@example.com"
}

apidog-body.png

これでユーザー名、パスワード、メールアドレスをサーバーに送信できます。便利ですよね!

Query と Body の主な違い

ここで Query と Body の違いをまとめておきましょう:

  • データ量:Query は少量データ向き、Body は大量データ向き
  • データ形式:Query は主にキーと値のペア、Body は JSON や XML など多様な形式をサポート
  • リクエストタイプ:Query は GET リクエストでよく使用、Body は POST、PUT、PATCH リクエストでよく使用
  • URL 制限:Query は URL の長さ制限を受ける、Body はその制限を受けない

実際の使用シーン

実務では、どんな時に Query と Body を使い分けるべきなのでしょうか?

Query を使うべき場面:

  • 検索機能:Google や Yahoo! で検索する時のキーワード指定
  • 結果のソート:商品を価格順や発売日順に並べ替える時
  • フィルタリング:特定の条件に合うデータだけを表示する時
  • ページネーション:大量のデータを複数ページに分けて表示する時

Body を使うべき場面:

  • フォーム送信:ユーザー登録やログイン情報の送信
  • ファイルアップロード:画像や文書のアップロード
  • 複雑な JSON データ:ユーザー設定や複雑なデータ構造の送信
  • 大量のデータ:URL の長さ制限を超えるデータの送信

Apidog での Query と Body の使い方

私が最近ハマっている Apidog というツールでは、Query と Body の設定が超簡単にできるんですよ!API テスト、API 管理、API ドキュメント作成が一つのツールでできるので、開発効率が格段に上がりました。

Apidog は API 開発のすべてのフェーズをサポートする統合ツールです。Query パラメータと Body の設定が直感的にでき、API テスト、ドキュメント作成、モック作成が一つのプラットフォームで完結。チーム全体の API 開発効率を劇的に向上させます。無料版から始められるので、ぜひお試しください!

Query パラメータの設定方法

apidog-params-1.png

Apidog で新しい HTTP リクエストを作成したら、URL 入力欄にテストしたい API アドレスを入力します。

リクエスト変更画面には「Query」タブがあり、ここでキーと値のペアを入力するだけで Query パラメータを追加できます。Apidog が自動的にこれらのパラメータを URL に追加してくれるので、手動で URL を編集する必要がありません。

設定が完了したら、リクエストを送信して応答を確認できます。Apidog は Query パラメータを含む完全な URL を表示し、明確な応答結果を提供してくれるので、データが正しく返されているかを簡単に確認できます。

Body の設定方法

apidog-body-json.png

同様に、Apidog で新しい HTTP リクエストを作成し、POST、PUT、PATCH などのリクエストタイプを選択します。

「Body」タブに切り替えて、データ形式(JSON、フォームデータ、XML など)を選択し、送信したいデータを入力またはペーストします。Apidog はフォーマット機能と検証機能を提供しているので、入力したデータが正しい形式であることを確認できます。

Body の設定が完了したら、リクエストを送信して応答を確認します。Apidog は送信したリクエスト本体とサーバーからの応答を表示してくれるので、データが正しく処理されているかを確認できます。

まとめ

Query と Body は HTTP リクエストの重要な構成要素で、それぞれ独自の用途と特徴があります。Query は小規模で単純なデータ転送に適しており、主に GET リクエストで使用されます。一方、Body は大規模で複雑なデータ転送に適しており、主に POST、PUT、PATCH リクエストで使用されます。

私の経験では、適切な場面で適切な方法を選ぶことが、効率的な API 設計と使用の鍵となります。特に最近のマイクロサービスアーキテクチャでは、適切な API 設計がシステム全体のパフォーマンスに大きく影響するんですよね。

Apidog のようなツールを使えば、Query パラメータとリクエスト本体の管理とテストが簡単になり、API 開発の効率が大幅に向上します。API ドキュメントの自動生成、自動テスト、チーム協業などの高度な機能も活用できるので、ぜひ試してみてください!

皆さんも日々の開発で Query と Body を適切に使い分けて、効率的な API 開発を進めていきましょう!何か質問や意見があれば、コメント欄でぜひ教えてくださいね。一緒に技術を高め合いましょう!

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?