如何在 Web 中按路由拆分控制器 Api 2
How to split controllers by route in Web Api 2
我有一堆控制器,想通过路由将它们分成两组:
config.Routes.MapHttpRoute(
"r1",
"api/v1.0/route1/{controller}/{action}/{id}",
new {id = RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
"r2",
"api/v1.0/route2/{controller}/{action}/{id}",
new { id = RouteParameter.Optional }
);
我想我可以用类似的东西来做到这一点:
[RoutePrefix("api/v1.0/route1")]
public class MyController : ApiController
让它只走 route1,但是我也可以通过 route2 到达它。
我也试过了
[RoutePrefix("route1")]
public class MyController : ApiController
同样的结果。我怎样才能让 MyController 只走 route1?一如既往地感谢您的帮助。
你想要
[RoutePrefix("api/v1.0)]
public class MyController : ApiController
然后是方法本身
[Route("route1")]
public async Task<HttpResponseMessage> RouteOne(object params)
{
...
}
[Route("route2")]
public async Task<HttpResponseMessage> RouteTwo(object params)
{
...
}
同意评论者所说的不要管 MapHttpRoute
。应如下所示:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我有一堆控制器,想通过路由将它们分成两组:
config.Routes.MapHttpRoute(
"r1",
"api/v1.0/route1/{controller}/{action}/{id}",
new {id = RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
"r2",
"api/v1.0/route2/{controller}/{action}/{id}",
new { id = RouteParameter.Optional }
);
我想我可以用类似的东西来做到这一点:
[RoutePrefix("api/v1.0/route1")]
public class MyController : ApiController
让它只走 route1,但是我也可以通过 route2 到达它。
我也试过了
[RoutePrefix("route1")]
public class MyController : ApiController
同样的结果。我怎样才能让 MyController 只走 route1?一如既往地感谢您的帮助。
你想要
[RoutePrefix("api/v1.0)]
public class MyController : ApiController
然后是方法本身
[Route("route1")]
public async Task<HttpResponseMessage> RouteOne(object params)
{
...
}
[Route("route2")]
public async Task<HttpResponseMessage> RouteTwo(object params)
{
...
}
同意评论者所说的不要管 MapHttpRoute
。应如下所示:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);