ASP.NET WebAPI 2路由

时间:2015-09-02 01:19:46

标签: c# asp.net-web-api

我只是有一个关于ASP.NET Web API属性路由似乎有什么限制的快速问题,但希望我只是在研究中吮吸。在我的控制器中,我正在尝试做这样的事情:

public class OrdersController : ApiController
{
    [HttpGet]
    [Route("{apiRoot}/customers/{id:int}/orders")]
    public IHttpActionResult GetCustomerOrders(int id) {...}
}

在配置文件中定义{apiRoot}

实际上这可能不是必需的,但我想知道如何在路由属性中放置特定路径而无需编写静态路径。这里的一般想法应该是你只将文本放入路径路径,除了{}中的参数吗?

1 个答案:

答案 0 :(得分:0)

如何切换到使用RoutePrefix:

[MyRoutePrefix]
public class OrdersController : ApiController
{
    [HttpGet]
    [Route("customers/{id:int}/orders")]
    public IHttpActionResult GetCustomerOrders(int id) {...}
}

public class MyRoutePrefixAttribute : RoutePrefixAttribute
{
    public MyRoutePrefixAttribute() 
    {
        Prefix = "the route prefix";
    }
}

RoutePrefixAttribute不像RouteAttribute那样密封,所以扩展它应该允许你做你需要的。当然,假设单个类中的所有控制器使用相同的根路径。

注意:我没有机会尝试这个,但鉴于我所知道的属性路由,我不明白它为什么不能工作。