Darinの答えは常に最高ですが、この質問は実際にどのAPIで検索、ページング、フィルタリングを実際に行うべきか、Web APIの最新バージョンv2)。
これは私が問題に優れたリソース(技術indenpendent)考えるのポストです: http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
答えはまた、ダーリンの答えはかなり古いですので、ASP.NETのWeb API v2のの新機能を反映すべきです。
「asp.net web api searching」のGoogle検索では、この質問がトップに表示されるため、ここではいくつか説明します。
最新バージョンのASP.NET Web API(v2)でRESTの原則に可能な限り近づけるには、最新バージョンで導入された属性ルーティングを真剣に検討する必要があります。古くからの古典的な規則に基づいたルーティング(global.asax.csまたはRouteConfig.cs)を使用してRESTfulルーティングを実現することは非常に困難です。
あなたが尋ねる仕様を実装する方法を詳細に入るために、今ここに http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
それについての詳細をお読みください。
最も一般的な方法は、クエリ文字列パラメータを使用してこれらの種類の機能を公開することです。
パーRESTの原則は、あなたが
/api/customers
は、あなたがこの
[HttpGet]
[Route("/api/customers")]
public HttpResponseMessage GetCustomers(string q="", string sortBy="", string sortDirection="", bool active=true, ...)
{
// q = being optional search query
// sortBy = optional sort by column/property
// sortDirection = optional sort direction
// active = filter on 'active' column/property
// ... other filters may be applicable
}
のようなあなたのウェブAPIコントローラであなたのGetCustomers()アクションを飾るだろうこれを実現するために、たとえば、あなたの顧客のリソースのための1つのエンドポイントを持っている必要があります
フィルタリングされたビューを提供する場合は、このアクションを従来のMVCで行ったことに厳密に実装します。
いくつかのカスタムエッジのケースでは、本当に必要な場合にのみ、新しいコントローラとカスタムアクションを導入します。
SearchFilterの厳密に型指定されたオブジェクトに関するコメントに関しては、GETリクエストを使用するときに既定のモデルバインダーがこのクラスにバインドされないため、これはそのままでは機能しないことを説明しましょう。
したがって、これらのプロパティをSearchFilterクラスから取り出してアクション自体に入れて、クエリ文字列バインダを使用してバインドするか、リクエスト本体からバインドする場合は[FromBody]
バインダを使用します。 HTH
http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-apiあたりとしてどのように私は、RESTfulな方法を使ってこれを実現するのでしょうか?別のGETメソッドを使用することはできません。 – CallumVass
別のコントローラを作成します:SearchProductsContollerまたは何でも使用して、その中でGetアクションを使用します。 –
ああ..私が思ったのと同じように、通常どんなことが起こるのだろうか?追加のGETリクエストが必要な場合は、新しいコントローラを追加できますか? – CallumVass