这是我的代码:
public class SecurityController : ApiController
{
//GET api/Security/Current
public HttpResponseMessage GetCurrent(){
}
//POST api/Security/Login
public HttpResponseMessage PostLogin(LoginModel model){
}
}
public class OrdersController : ApiController
{
[ActionName("Default")] //GET api/Orders
public HttpResponseMessage Get(){
}
[ActionName("Default")] //GET api/Orders/2
public HttpResponseMessage Get(long id){
}
[ActionName("Default")] //POST api/Orders/
public HttpResponseMessage Post(Order order){
}
[ActionName("Default")] //DELETE api/Orders/2
public HttpResponseMessage Delete(long id){
}
[HttpPost] //POST api/Orders/2/PerformAction
public HttpResponseMessage PerformAction(long id, ActionMsg action){
}
}
//路由定义
config.Routes.MapHttpRoute("ActionApi", "api/{controller}/{action}");
config.Routes.MapHttpRoute("WithActionApi", "api/{controller}/{id}/{action}");
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional, action = "Default" }, new { id = @"\d+" });
我的路由不起作用。
No HTTP resource was found that matches the request URI
我的 API 控制器的正确路由定义是什么?
谢谢!
将您的 SecurityController 更改为:
public class SecurityController : ApiController
{
//GET api/Security/Current
[HttpGet]
[ActionName("current")]
public HttpResponseMessage GetCurrent(){
}
//POST api/Security/Login
[HttpPost]
[ActionName("login")]
public HttpResponseMessage PostLogin(LoginModel model){
}
}
然后将您的路由更改为:
config.Routes.MapHttpRoute("ActionApi",
"api/{controller}/{action}",
null,
new { action = @"[a-zA-Z]+" });
config.Routes.MapHttpRoute("WithActionApi",
"api/{controller}/{id}/{action}");
config.Routes.MapHttpRoute("DefaultApi",
"api/{controller}/{id}",
new { id = RouteParameter.Optional, action = "Default" },
new { id = @"\d*" });
请注意,最后一条路由中需要正则表达式“\d*”,而不是“\d+”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)