Asp.net mvc 同一控制器中的多个post方法
我正在尝试创建具有多个post操作的web api 我有两个帖子Asp.net mvc 同一控制器中的多个post方法,asp.net-mvc,asp.net-web-api,asp.net-web-api2,asp.net-web-api-routing,Asp.net Mvc,Asp.net Web Api,Asp.net Web Api2,Asp.net Web Api Routing,我正在尝试创建具有多个post操作的web api 我有两个帖子 [HttpPost] [ActionName("Search")] public HttpResponseMessage Search(string value) { return null; } [HttpPost] public HttpResponseMessage Post([FromBody]CreateModel app) {
[HttpPost]
[ActionName("Search")]
public HttpResponseMessage Search(string value)
{
return null;
}
[HttpPost]
public HttpResponseMessage Post([FromBody]CreateModel app)
{
return null;
}
webApiConfig文件中定义的路由和路由:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
/带有POST hit POST的api/控制器,/api/控制器/搜索返回404-未找到
有人能帮我一下吗?对我来说,由于以下原因,程序很难理解这条路线: 当您向/api/Controller/Search发送POST请求时,程序对去哪里感到困惑: 1) api/{controller}/{action}as{id}在这里是可选的 或 2) api/{controller}/{id} 两者具有相同的路由结构。所以,对于您给定的示例,有两种可能的路由重定向方法,这将使您在404上着陆
您的路线必须向下过滤到一个唯一的路径,我相信您需要在此处更改路线。在我看来,由于以下原因,程序难以理解路线: 当您向/api/Controller/Search发送POST请求时,程序对去哪里感到困惑: 1) api/{controller}/{action}as{id}在这里是可选的 或 2) api/{controller}/{id} 两者具有相同的路由结构。所以,对于您给定的示例,有两种可能的路由重定向方法,这将使您在404上着陆
您的路线必须向下过滤到一个唯一的路径,我相信您需要在此处更改路线。在同一控制器中进行多个POST操作没有什么错,您已经清楚地区分了它们 您案例中的问题在于如何定义路线。您可以观察到这两个操作都没有名为“id”的参数,但您正在路由中描述它们 首先,从路由中删除id参数,例如
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = RouteParameter.Optional }
);
理想情况下,这应该带您到POST方法,若您在URL中添加/搜索,它应该带您到搜索方法
此外,您还可以使用来帮助您识别路由匹配是如何发生的,并对其进行纠正。在同一控制器中进行多个POST操作没有什么错,您已经清楚地区分了它们 您案例中的问题在于如何定义路线。您可以观察到这两个操作都没有名为“id”的参数,但您正在路由中描述它们 首先,从路由中删除id参数,例如
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = RouteParameter.Optional }
);
理想情况下,这应该带您到POST方法,若您在URL中添加/搜索,它应该带您到搜索方法
此外,您可以使用来帮助您确定路线匹配是如何发生的,并对其进行纠正。您可以使用
首先,在WebApiConfig.cs中添加
config.MapHttpAttributeRoutes();
然后在方法的route属性ontop中将路由定义为字符串,如下所示
[HttpPost]
[Route("api/controller/search")]
public HttpResponseMessage Search(string value)
{
return null;
}
[HttpPost]
[Route("api/controller/create")]
public HttpResponseMessage CreateModel([FromBody]CreateModel app)
{
return null;
}
而且,搜索方法更适合使用HTTP/GET 你可以用这个
首先,在WebApiConfig.cs中添加
config.MapHttpAttributeRoutes();
然后在方法的route属性ontop中将路由定义为字符串,如下所示
[HttpPost]
[Route("api/controller/search")]
public HttpResponseMessage Search(string value)
{
return null;
}
[HttpPost]
[Route("api/controller/create")]
public HttpResponseMessage CreateModel([FromBody]CreateModel app)
{
return null;
}
而且,搜索方法更适合使用HTTP/GET