パスパラメータ・クエリストリング・リクエストボディの使い分け
フロントからバックに値を渡すときの手段
フロントエンドからバックエンドに値を渡すとき、以下のような方法が存在する。
パスパラメータ
クエリストリング
リクエストボディ
本記事ではこれら3つの説明とその使い分けについて記述する。
パスパラメータ
パスパラメータでは次のようにURIのパス指定で値を渡す。{...}
の部分がパスパラメータである。
https://hogehoge.com/category/{category_name}/...
次の例はcategory_nameとしてfoodsかdrinksを指定している。
https://hogehoge.com/category/foods/... https://hogehoge.com/category/drinks/...
パスパラメータは表示のベースとなるWebページそのものを指定することに使われる。上記の例であれば、foodsカテゴリ・drinksカテゴリなど、商品検索のベースとなるカテゴリを指定できる。
クエリストリング
クエリストリングではURIの後方で?name=
といった形で指定する。次の例は検索ワードとしてラーメンを指定する例である。
https://hogehoge.com/category/foods/?word=ラーメン
また、クエリストリングは次のように連続して記述ができ、複数渡すことができる。
https://hogehoge.com/category/foods/?word=ラーメン&order=desc
クエリストリングはWebページのオプションを指定する場合に使われる。上記の例であれば、foodsカテゴリのWebページにてラーメンを検索し、検索結果を降順で表示する。
リクエストボディ
リクエストボディではHTTP Requestのボディ内でパラメータを指定する。指定する際にはJSON形式などを用いる。次の例は、商品レビューを追加する例である。
POST /hoge/ HTTP/1.1 Host: hogehoge.com Connection: keep-alive ... { "review_id": 12345, "title": "おすすめ" "detail: "この商品は..." }
リクエストボディは複雑なパラメータを渡すことができる。そのため、新規に内容を作成する場合や、既存の内容を更新する場合などに使われる。
まとめ
- フロントエンドからバックエンドに値を渡す代表的手法として、パスパラメータ・クエリストリング・リクエストボディが存在する。
- 表示のベースとなるWebページを指定するにはパスパラメータを使用する。
- Webページでオプションを指定する際にはクエリストリングを使用する。GETメソッドがこれにあたる。
- 内容の作成や更新を行う際はリクエストボディを使用する。POST、PUT、PATCHメソッドがこれにあたる。
References
- @sakuraya:"そのリクエストパラメータ、クエリストリングに入れますか、それともボディに入れますか"、Qiita、入手先 <https://qiita.com/sakuraya/items/6f1030279a747bcce648> (参照2022-05-18)。
- @Shokorep:"[RESTful API]パスパラメータ、クエリパラメータ、リクエストボディの違いと設計"、Qiita、入手先 <https://qiita.com/Shokorep/items/b7697a146cbb1c3e9f0b> (参照2022-05-18)。