検索用のRESTful URL設計 質問する

検索用のRESTful URL設計 質問する

検索を RESTful URL として表現する適切な方法を探しています。

設定: 車とガレージの 2 つのモデルがあり、車はガレージに置けます。したがって、URL は次のようになります。

/car/xxxx
  xxx == car id
  returns car with given id

/garage/yyy
  yyy = garage id
  returns garage with given id

車は単独で存在することも (/car がそれです)、ガレージ内に存在することもできます。たとえば、特定のガレージ内のすべての車を表す正しい方法は何でしょうか? 次のような形式です。

/garage/yyy/cars     ?

ガレージ yyy と zzz の車の結合はどうでしょうか?

特定の属性を持つ車の検索を表現する正しい方法は何ですか? たとえば、「4 ドアの青いセダンをすべて表示」とします。

/car/search?color=blue&type=sedan&doors=4

それとも代わりに /cars にするべきでしょうか?

ここで「検索」を使用するのは不適切と思われます。より良い方法/用語は何でしょうか? 次のようにすべきでしょうか:

/cars/?color=blue&type=sedan&doors=4

検索パラメータは PATHINFO または QUERYSTRING の一部である必要がありますか?

つまり、クロスモデル REST URL 設計と検索に関するガイダンスを探しています。

[更新] Justin の回答は気に入っていますが、マルチフィールド検索のケースについては説明されていません。

/cars/color:blue/type:sedan/doors:4

あるいはそのようなもの。

/cars/color/blue

複数フィールドの場合?

ベストアンサー1

検索にはクエリ文字列を使用します。これは完全に RESTful です。

/cars?color=blue&type=sedan&doors=4

通常のクエリ文字列の利点は、標準であり、広く理解されており、form-get から生成できることです。

おすすめ記事