WebApi 路由不适用于 Post
WebApi Routing not working for Post
我的 WebApiConfig 有以下路由
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { controller = "Employee", action = "Get", id = RouteParameter.Optional }
);
PostWebApi 方法有以下签名
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
.....
}
当我尝试调用此方法时,我得到 "Method not allowed"
如果我将我的 Post 方法更改为跟随它开始工作
[Route("api/employee/post")]
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
我不明白这是怎么回事。我希望它与属性路由一起使用。任何人都可以建议这里有什么问题。 GET 和 Post 路由会混淆吗?
如下所示设置您的默认路线:
config.MapHttpAttributeRoutes(); //this enables attribute routing
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
); //this route is for conventional routing
现在您可以通过常规路由像 http://{siteurl}/api/employee/ 这样调用下面的 API。
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
现在您可以通过属性路由调用下面的 API,例如 http://{siteurl}/api/employee/post/:
[Route("api/employee/post")]
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
这里[Route]参数添加路由,称为属性路由。
您可以在此处找到参考 Routing and Action Selection
我的 WebApiConfig 有以下路由
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { controller = "Employee", action = "Get", id = RouteParameter.Optional }
);
PostWebApi 方法有以下签名
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
.....
}
当我尝试调用此方法时,我得到 "Method not allowed"
如果我将我的 Post 方法更改为跟随它开始工作
[Route("api/employee/post")]
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
我不明白这是怎么回事。我希望它与属性路由一起使用。任何人都可以建议这里有什么问题。 GET 和 Post 路由会混淆吗?
如下所示设置您的默认路线:
config.MapHttpAttributeRoutes(); //this enables attribute routing
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
); //this route is for conventional routing
现在您可以通过常规路由像 http://{siteurl}/api/employee/ 这样调用下面的 API。
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
现在您可以通过属性路由调用下面的 API,例如 http://{siteurl}/api/employee/post/:
[Route("api/employee/post")]
[HttpPost]
public IHttpActionResult Post(Employee emp)
{
...
}
这里[Route]参数添加路由,称为属性路由。 您可以在此处找到参考 Routing and Action Selection