パスパラメータとクエリパラメータの違いとは?初心者向けにURLの仕組み・使い分け・APIでの利用例をわかりやすく解説

パスパラメータとクエリパラメータの違いとは?初心者向けにURLの仕組み・使い分け・APIでの利用例をわかりやすく解説

結論

パスパラメータとクエリパラメータは、どちらもURLでデータを渡す方法ですが、役割が異なります。パスパラメータは「どのデータを操作するか」を指定し、クエリパラメータは「どのような条件で取得するか」を指定するのが基本です。

IT業務では、REST APIの開発や運用、Webシステムの障害調査、クラウドサービスとの連携などで頻繁に登場するため、違いを理解しておくことが重要です。

パスパラメータとは

パスパラメータとは、URLのパス(Path)に含まれる値です。

主に、特定のリソース(対象データ)を指定するために使用されます。

Example Domain

この場合、「100」がパスパラメータです。

「ユーザーIDが100の情報を取得する」という意味になります。

クエリパラメータとは

クエリパラメータとは、URLの「?」以降に付加される情報です。

主に、検索条件や並び順、表示件数などの条件を指定するために使用されます。

Example Domain

この場合、以下がクエリパラメータです。

  • department=Sales
  • page=2

パスパラメータとクエリパラメータの違い

項目 パスパラメータ クエリパラメータ
役割 対象データを指定する 取得条件を指定する
URL内の位置 パスの一部 「?」以降
必須になること 多い 任意の場合が多い
利用例 ユーザーID、商品ID 検索、並び替え、ページ番号

イメージで理解する

図書館で本を探す場面に例えると分かりやすくなります。

例え 意味
パスパラメータ 本の管理番号を指定する
クエリパラメータ 著者名や出版年で検索する

「どの本か」を指定するのがパスパラメータ、「どんな条件で探すか」を指定するのがクエリパラメータです。

どんな場面で使われるのか

パスパラメータを使う場面

  • ユーザー情報の取得
  • 商品情報の表示
  • 社員情報の更新
  • ファイルのダウンロード

/users/100

ユーザーID「100」の情報を取得します。

クエリパラメータを使う場面

  • 検索条件の指定
  • 並び順の指定
  • ページ番号の指定
  • 表示件数の指定

/users?department=Sales&sort=name

営業部のユーザーを名前順で表示します。

なぜ使い分けるのか

URLの意味を分かりやすくし、REST APIの設計ルールに沿った構成にするためです。

「対象データ」と「検索条件」を分けることで、APIの仕様書やソースコードも理解しやすくなります。

初心者が混乱しやすいポイント

どちらもデータを渡すため区別しにくい

どちらもサーバーへ情報を渡しますが、用途が異なります。

「対象を指定するならパス」「条件を指定するならクエリ」と覚えると理解しやすくなります。

クエリパラメータは複数指定できる

「&」で区切ることで複数の条件を指定できます。

?department=Sales&page=2&sort=name

実際のIT現場での利用例

  • REST API
  • Microsoft Graph API
  • クラウドサービスのAPI
  • 社内Webシステム
  • ECサイトの商品検索
  • 管理画面の一覧表示

REST APIでは、「リソースはパスパラメータ」「検索条件はクエリパラメータ」という設計が一般的です。

筆者が現場で経験した失敗談

APIテストで、検索条件をパスパラメータへ含めてしまい、404 Not Foundエラーになったことがありました。

仕様書を確認すると、検索条件はクエリパラメータで渡す設計になっており、URLを修正すると正常に動作しました。

APIでは、パスとクエリの役割を理解することが重要です。

業務でよくあるトラブル

  • パスパラメータの指定ミス
  • クエリパラメータの入力漏れ
  • パラメータ名のスペルミス
  • URLエンコード不足
  • 404 Not Foundエラー
  • 400 Bad Requestエラー

原因の切り分け

確認項目 内容
URL 正しい形式か
パス 対象リソースが正しいか
クエリ 条件が正しく指定されているか
HTTPメソッド GETやPOSTが正しいか
API仕様 設計書どおりか

確認する順番

  1. URL全体を確認する
  2. パスパラメータを確認する
  3. クエリパラメータを確認する
  4. HTTPメソッドを確認する
  5. HTTPステータスコードを確認する
  6. API仕様書を確認する

GUIで確認する方法

Google Chrome

  1. F12キーを押す
  2. Networkタブを開く
  3. 対象通信を選択する
  4. Headersを開く
  5. Request URLを確認する

URL全体を確認することで、パスパラメータとクエリパラメータの両方を確認できます。

コマンドプロンプトで確認する方法

curlコマンドを利用するとAPIの動作を確認できます。

パスパラメータの例

curl https://example.com/users/100

クエリパラメータの例

curl “https://example.com/users?department=Sales&page=2”

PowerShellで確認する方法

PowerShellではInvoke-RestMethodやInvoke-WebRequestを利用して、パスパラメータやクエリパラメータを含むURLへアクセスできます。

APIのテストや自動化スクリプトで広く利用されています。

ログの確認方法

  • IISアクセスログ
  • Apacheアクセスログ
  • Nginxアクセスログ
  • APIログ
  • アプリケーションログ

リクエストURLやHTTPステータスコードを確認することで、どのパラメータでアクセスされたか調査できます。

イベントビューアーの確認方法

パスパラメータやクエリパラメータ自体はイベントビューアーへ記録されません。

WebサービスやAPIでエラーが発生した場合は、イベントビューアーやアプリケーションログを確認します。

  1. Windows+Rキーを押す
  2. eventvwr.msc と入力する
  3. Windowsログ
  4. アプリケーション
  5. エラーや警告を確認する

確認結果の見方

HTTPステータスコード 意味
200 OK 正常
400 Bad Request パラメータの誤り
401 Unauthorized 認証エラー
403 Forbidden 権限不足
404 Not Found パスや対象データが存在しない
500 Internal Server Error サーバー内部エラー

影響範囲を考える

  • 特定のAPIだけか
  • 検索機能全体か
  • ユーザー全員へ影響するか
  • サーバー側の問題か
  • API仕様の変更が影響しているか

ユーザー側・サーバー側の切り分け

確認対象
ユーザー側 URL、入力内容、HTTPメソッド
サーバー側 API、Webサーバー、アプリケーション
ネットワーク DNS、FW、プロキシ
認証 アクセストークン、ログイン状態

初心者がやりがちなミス

  • 対象IDをクエリパラメータで渡す
  • 検索条件をパスへ含める
  • 「?」と「&」を間違える
  • URLエンコードを忘れる
  • API仕様書を確認しない

業務で上司へ報告するポイント

  • 対象APIのURL
  • パスパラメータの内容
  • クエリパラメータの内容
  • HTTPメソッド
  • HTTPステータスコード
  • 発生日時
  • 影響範囲
  • 実施した確認内容

エスカレーションするタイミング

  • API仕様どおりでもエラーが発生する
  • 404や500エラーが継続する
  • 検索機能全体が利用できない
  • APIサーバーの障害が疑われる
  • 本番環境だけで発生している

パスパラメータとクエリパラメータの使い分け

用途 使用するパラメータ
特定ユーザーを取得する パスパラメータ /users/100
営業部のユーザーを検索する クエリパラメータ /users?department=Sales
商品一覧を価格順に表示する クエリパラメータ /products?sort=price
商品ID100を取得する パスパラメータ /products/100

関連するIT用語

  • REST API
  • HTTP
  • HTTPS
  • URL
  • URI
  • GET
  • POST
  • JSON
  • HTTPステータスコード

よくある質問(FAQ)

パスパラメータとクエリパラメータはどちらも必須ですか?

パスパラメータは必須になることが多く、クエリパラメータは任意の場合が多いです。ただし、APIの仕様によって異なります。

検索機能ではどちらを使いますか?

検索条件や並び順、ページ番号などは、一般的にクエリパラメータを使用します。

ユーザーIDはどちらで指定しますか?

REST APIでは、特定のユーザーを指定する場合はパスパラメータを使用することが一般的です。

クエリパラメータは複数指定できますか?

はい。「&」で区切ることで複数のクエリパラメータを指定できます。例えば「?department=Sales&page=2&sort=name」のように記述します。

まとめ

パスパラメータとクエリパラメータはどちらもURLでデータを渡す仕組みですが、パスパラメータは「どのデータを操作するか」、クエリパラメータは「どのような条件で取得するか」を指定するという違いがあります。

REST APIでは、対象となるリソースはパスパラメータ、検索条件や並び替え、ページ番号などはクエリパラメータで指定する設計が一般的です。この使い分けを理解しておくことで、API仕様書を読みやすくなり、障害調査やAPIテストもスムーズに進められるようになります。

コメント

タイトルとURLをコピーしました