这是我的代码:
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){
}
}
Run Code Online (Sandbox Code Playgroud)
//路线定义
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+" });
Run Code Online (Sandbox Code Playgroud)
我的路由无效.
No HTTP resource was found that matches the request URI
Run Code Online (Sandbox Code Playgroud)
我的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){
}
}
Run Code Online (Sandbox Code Playgroud)
然后将您的路由更改为:
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*" });
Run Code Online (Sandbox Code Playgroud)
注意在最后一个路由中需要正则表达式"\ d*"而不是"\ d +".
| 归档时间: |
|
| 查看次数: |
6476 次 |
| 最近记录: |