我在使用 Web API 时遇到了一些问题,标准文档对我没有多大帮助..
我有一个ProductsController
, 带有一个默认方法GetAllProducts()
,它接受几个 GET 参数(这种方式更容易实现)用于查询。
现在,在应用程序的另一部分,我使用了一个 jQuery 自动完成插件,它必须查询我的 web 服务并过滤数据。问题是,它需要自定义格式的结果,这与 Web API 返回的格式不同。我继续创建另一个方法,GetProductsByQuery(string query)
它应该以该格式返回数据。
有什么方法可以强制 WebAPI 根据需要返回数据,而无需创建另一个控制器?
我的路由表也有问题,因为所有 GET 都直接使用第一种方法,即使我将第二种方法路由到url: "{controller}/query/{query}"
这是一些代码:
公共类 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}");