[英]Web api route wint action require names for multiple get method
我有一个名为product的asp.net mvc控制器。
public class ProductController : ApiController
{
[HttpGet]
public IHttpActionResult Get()
{
return Ok("product");
}
}
我的路线是这样的。
config.Routes.MapHttpRoute("DefaultRoute",
"api/{controller}/{id}",
new { id = RouteParameter.Optional });
我可以使用以下网址访问产品的Get方法: localhost:2541/api/product
我需要一些estra来解决。
public class ProductController : ApiController
{
[HttpGet]
public IHttpActionResult Get()
{
return Ok("product");
}
[HttpGet]
public IHttpActionResult Hello()
{
return Ok("Hello from product");
}
}
我设定了新路线。
config.Routes.MapHttpRoute("ActionsRoute",
"api/{controller}/{action}/{id}",
new { id = RouteParameter.Optional });
但是我无法访问localhost:2541/api/product
错误:
找到多个符合请求的操作:Get
这是因为现在通过包含{action}
路由参数,现在需要在请求中包括动作的名称,否则将不知道选择哪个动作。 喜欢
localhost:2541/api/product/Get
如果仍然需要根,则在映射路由时包括默认值。
config.Routes.MapHttpRoute("ActionsRoute",
"api/{controller}/{action}/{id}",
new { action = "Get", id = RouteParameter.Optional });
完成后,下面的调用将如下所示
GET localhost:2541/api/product --> ProductController.Get
GET localhost:2541/api/product/Get --> ProductController.Get
GET localhost:2541/api/product/Hello --> ProductController.Hello
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.