C# .NET Web API自定义返回值
我在Web API方面遇到了一些问题,标准文档对我帮助不大 我有一个C# .NET Web API自定义返回值,c#,asp.net,asp.net-mvc,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,我在Web API方面遇到了一些问题,标准文档对我帮助不大 我有一个ProductsController,带有一个默认方法GetAllProducts(),它接受多个GET参数(这种方法更容易实现)进行查询 现在,在应用程序的另一部分中,我使用jQuery自动完成插件,它必须查询我的Web服务并过滤数据。问题是,它希望结果采用自定义格式,这与Web API返回的格式不同。我继续创建另一个方法,GetProductsByQuery(字符串查询),它应该以该格式返回数据 有没有什么方法可以强制Web
ProductsController
,带有一个默认方法GetAllProducts()
,它接受多个GET参数(这种方法更容易实现)进行查询
现在,在应用程序的另一部分中,我使用jQuery自动完成插件,它必须查询我的Web服务并过滤数据。问题是,它希望结果采用自定义格式,这与Web API返回的格式不同。我继续创建另一个方法,GetProductsByQuery(字符串查询)
,它应该以该格式返回数据
有没有什么方法可以强制WebAPI返回我想要的数据,而不需要另一个控制器
我还遇到了路由表的问题,因为所有的get都直接转到第一个方法,即使我将第二个方法路由到url:“{controller}/query/{query}”
下面是一些代码:
公共类产品控制器:ApiController
{
您需要交换您的路由-任何与第二条路由匹配的请求都将首先与第一条路由匹配 其次,如果您需要数据的特定返回格式,请查看自定义媒体格式化程序:
请发布您的代码。对,没有看到。我发布了一个精简版的代码,通过我的测试,您不必从ProductsController返回产品,您可以返回任何您想要的。只需返回与调用方期望的合同相匹配的自定义对象(假设它需要json输出)。
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}");