私はサーバーサイドのWeb開発には新しく、最近はRESTful APIの実装について多くのことを読んできました。私がまだ立ち往生しているREST APIの1つの側面は、クライアントが対話できるリソースを識別するURI階層を構造化する方法です。具体的には、他のリソースタイプで構成されているリソースの場合、どのように詳細を階層化するのか、どのようにすればよいのかを決めることに固執しています。RESTリソース階層を構造化する方法は?
ここに、私が意味することをうまく示してくれる例があります。ユーザーが他のユーザーから製品を購入できるようにするWebサービスがあるとします。したがって、この単純なケースでは、2つの最上位レベルのリソースユーザーとの製品があります。ここで私は、ユーザーのために、
をURIの階層を構築し始めた方法は次のとおりです。製品について
/users
/{id}
/location
/about
/name
/seller_rating
/bought
/sold
:各階層の参照でこれらの例オブジェクトの両方で
/products
/{id}
/name
/category
/description
/keywords
/buyer
/seller
サブセット他の階層のオブジェクトのたとえば、/users/{id}/bought
は、購入した製品のリストで、/products
のサブセットです。また、/products/{id}/seller
は、特定の製品を販売したユーザーを参照します。
これらのURIの参照先の他のオブジェクトまたは他のオブジェクトのサブセットは、APIが/users/{id}/bought/id/description
と/products/{id}/buyer/location
のようなものをサポートしている必要がありますか?これらのタイプのURIがサポートされている場合、何がこのようなものを停止するのでしょうか/users/{id}/bought/{id}/buyer/bought/{id}/seller/name
、または何か等しく畳み込まれていますか?また、この場合、サーバ内のルータはURIの任意の長さを解釈する必要があるので、どのようにルーティングを処理しますか?
だから、何を言っていることは、システム内のすべてのリソースが正確に** 1 ** URIを持っているということでしょうか?それはすべてをより簡単にするからです。上記の例では、いくつかの製品の販売者をapiを通じて公開する場合(商品には1つの売り手しかありません)、何をお勧めしますか?私はちょうど人々が* GET/products/{id} *を売り手と一緒にいくつかのJSONオブジェクトを返すようにする必要がありますか? – martega
'/ products/{id}'のJSONには、ユーザの便宜のためにネストされたユーザオブジェクトが含まれている場合もあれば、そのユーザにURLがある場合もあります。 – Anri
btw、それは他のサービスのAPIを見るのに役立ちます。例:https://developer.foursquare.com/docs/venues/venues – Anri