検索を 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 から生成できることです。