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


違いをなんとなく把握で終わっていたので、
頭の整理も兼ねて「パスパラメータとクエリパラメータの違い」を説明します!

※もし認識に間違い等ありましたら、ご指摘ください!

見た目の違い

①https://zenn.dev/search

②https://zenn.dev/search?q=Laravel

①と②の見た目違いとして「search」の後に「?〜」が」あるかどうか

①のパスパラメータはsearchの部分になる
②の場合、パスパラメータは①と同じくsearch、クエリパラメータは?q=Laravel

中身の違い

次にそれぞれが何を表しているのか確認しよう!

例:株式会社アニメ(ドメイン:Anime.co.jp)に営業部(Sales)があり、チームが以下のように分かれているとする

SalesTable

id name
1 Isono
2 Doraemon

チームの中のユーザーは以下の通り

UsersTable

id sales_id name
1 1 サザエ
2 1 カツオ
3 1 ワカメ
4 2 のび太
5 2 ドラえもん
6 1 波平

営業部のIsono(磯野)チームのページを表示するとなるとURIは以下のようになる.

https://Anime.co.jp/Salse/{group_id}

パスパラメータ特定のもの(画面など)を表示したいときに必要になります。

// IsonoチームのSalesTableidは「1」
https://Anime.co.jp/Salse/1

もし、メンバー一覧を画面表示にしたい場合は、下記のURIとする。

https://Anime.co.jp/Salse/1/members

クエリパラメータ特定のもの(画面など)に条件を加える場合に必要になります。

例:上記のメンバー一覧から特定の人を検索したい場合(今回はID検索と想定)
今回はUsersTableのID:3(ワカメ)を検索(条件の追加)します。

https://Anime.co.jp/Salse/1/members?id=3

自分の中で腑に落ちなかったパスパラメータとクエリパラメータでしたが、

という認識になりました。

表現が曖昧のため認識がずれていたらご指摘お願いします!
最後までお読みいただきありがとうございました!

参考記事:[RESTful API]パスパラメータ、クエリパラメータ、リクエストボディの違いと設計