RESTful API ではパスパラメータとクエリパラメータはいつ使用すればよいですか? 質問する

RESTful API ではパスパラメータとクエリパラメータはいつ使用すればよいですか? 質問する

私は自分のRESTfulAPIは非常に予測可能です。URIではなく、URLを使用してデータのセグメント化を行うタイミングを決定するためのベストプラクティスは何ですか?クエリパラメータ?

ページ区切り、並べ替え、グループ化をサポートするシステム パラメータが '?' の後にあるのは理にかなっていると思います。しかし、'status' や 'region' などのフィールドや、コレクションをセグメント化するその他の属性についてはどうでしょうか。これらもクエリ パラメータである場合、パス パラメータを使用するタイミングを判断するための経験則は何でしょうか。

ベストアンサー1

TL;DR: RESTful API 設計のベスト プラクティスは、パス パラメータを使用して特定のリソースを識別しクエリ パラメータを使用してそれらのリソースを並べ替え/フィルター処理することです。


次に例を示します。Carというエンティティの RESTful API エンドポイントを実装しているとします。エンドポイントは次のように構成します。

GET /cars
GET /cars/:id\ POST /cars\ PUT /cars/:id\ DELETE/cars/:id

この方法では、取得するリソースを指定するときにのみパス パラメータを使用しますが、リソースの並べ替えやフィルタリングは一切行われません。

ここで、GET リクエストで車を色でフィルタリングする機能を追加したいとします。色はリソースではない (リソースのプロパティ) ため、これを行うクエリ パラメータを追加できます。そのクエリ パラメータをGET/carsリクエストに追加するには、次のようにします。

得る/cars?color=blue

このエンドポイントは、青い車だけが返されるように実装されます。

次のシンボルを使用して、さらにフィルタリング パラメータを追加できます&

得る/cars?color=blue&brand=ferrari

構文に関しては、URL名はすべて小文字にする必要があります。エンティティ名が英語で一般的に2つの単語で構成される場合は、単語をハイフンで区切る必要があります。キャメルケース

/two-words

おすすめ記事