我主要使用的是默认的WebAPI路由映射,具体如下:如何在ASP.NET MVC 4中映射这些WebApi路由?
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这是工作的罚款,我的网址如下所示:
[GET] /api/customers Get all customers
[GET] /api/customers/1 Get a specific customer
[POST] /api/customers Create a customer
都好,到目前为止,但现在我想添加一个“搜索”工具。为此,我将POST一个代表搜索条件的对象,因为有太多的选项可以将它作为GET在URL上执行。我的计划是,URL应该是这样的:
[POST] /api/customers/search
然而,默认的上述路由,服务器抱怨说,“多的行动中发现匹配的请求”,我认为这是因为我现在有两个接受POST数据的控制器方法(一个用于“创建”,另一个用于“搜索”),并且路由无法区分它们。
我尝试添加一个包含{action}组件的新路线图,但这并没有解决问题 - 大概是因为该URL对于路线图都是有效的路线图。 (我会以某种方式需要从默认的路由映射匹配停止“/搜索”变种
建议请
你是什么意思“我将发布一个代表搜索条件的对象”?请你举例说明POST(创建新的对象)根据搜索条件吗? – 2012-08-09 15:48:13
我的意思是,而不是有查询字符串参数我的搜索条件等等,我将发布一个对象,在我的请求的正文中定义搜索条件。因此,URL将简单地作为/ api/customers/search,但请求主体将包含一个XML或JSON块,告诉服务器要搜索哪些字词等。 – 2012-08-09 16:17:11
为什么不使用[POST]/api/customers?search = {你的搜索词}? – 2012-08-09 16:22:44