Web API に問題があり、標準のドキュメントはあまり役に立ちませんでした..
私は、クエリのためにいくつかの GET パラメータを受け入れるProductsController
デフォルトのメソッドを持つ を持っています (その方法で実装する方が簡単でした)。GetAllProducts()
ここで、アプリケーションの別の部分で、jQuery オートコンプリート プラグインを使用します。このプラグインは、Web サービスにクエリを実行し、データをフィルター処理する必要があります。問題は、Web API によって返されるものとは異なるカスタム形式の結果が期待されることです。別のメソッド の作成に進みます。このメソッドはGetProductsByQuery(string query)
、その形式でデータを返す必要があります。
別のコントローラーを作成せずに、必要に応じてデータを返すように WebAPI を強制する方法はありますか?
ルーティング テーブルにも問題があります。2 番目のメソッドをurl: "{controller}/query/{query}"
ここにいくつかのコードがあります:
public class ProductsController : ApiController {
public IEnumerable<Product> GetAllProducts() { NameValueCollection nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query); // Querying EF with the parameters in the query string return returnQuery; } [System.Web.Mvc.HttpGet] public dynamic GetProductsByQuery(string query) { return SomeCustomObject; }
そしてルーティング:
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( name: "Query", url: "{controller}/query/{query}");