我想为Owin WebApi创建一个路由模板,如下所示:
cfg.Routes.MapHttpRoute(
"API Default", "{myparam}/{controller}/{action}",
new { id = RouteParameter.Optional });
因为我在控制器选择之前定义了需要参数的控制器。
我试图删除参数并将其设置为控制器上的RoutePrefixAttribute但它不起作用。
{controller}必须是路线的第一个动态参数吗?
答案 0 :(得分:1)
我会使用某种形式的基于属性的路由来基于{myparam}转到不同的控制器。
第一个控制器:
[Route("param1/customer/{id}")]
public IEnumerable<Order> GetOrdersByCustomer(int id) { ... }
第二控制器:
[Route("param2/customer/{id}")]
public IEnumerable<Order> GetOrdersByCustomer(int id) { ... }
可在此处找到更多信息:Attribute Based WebAPI Routing
答案 1 :(得分:0)
删除RoutePrefix属性并在动作Route属性中设置第一个参数dynamic,如下例所示:
[HttpGet, Route("{myparam}/books/{bookId:int:min(1)}")]
public HttpResponseMessage Get(string myparam, int bookId)
{
...
}