jak*_*don 1 .net asp.net asp.net-mvc asp.net-web-api asp.net-web-api-routing
在 MVC 和 WebApi 中,您可以向路由添加参数约束(请参阅http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api- 2#约束)。您甚至可以对参数约束使用正则表达式。但是,我想知道是否可以使用正则表达式来处理 API 版本控制,其中许多路由可以/应该路由到相同的操作。
例如,我试图在实际 URI 中对我的 API 进行版本控制,如下所示:
/api/v3/SomeResource
Run Code Online (Sandbox Code Playgroud)
其中 v3 表示它是 API 的第 3 版。如果我使用的是 API 的第 3 版,则所有三个版本中的许多操作可能都没有变化,因此需要响应:
/api/v1/SomeResource
/api/v2/SomeResource
/api/v3/SomeResource
Run Code Online (Sandbox Code Playgroud)
因此,我希望能够像这样在我的路由属性中放置一个正则表达式: [Route("api/v(1|2|3)/SomeResource")] 但它似乎没有处理v(1|2|3) 作为正则表达式,而是将其视为文字。换句话说,对 /api/v1/SomeResource 的请求不会执行此操作。
有可能完成我想要完成的任务吗?有没有办法在我的路线中加入正则表达式?
提前致谢!
看看这个: [HttpGet, Route("Api/v{version:int:regex(1|2|3)}/SomeResource")]
参考:http : //sampathloku.blogspot.com/2013/12/attribute-routing-with-aspnet-mvc-5.html
| 归档时间: |
|
| 查看次数: |
6089 次 |
| 最近记录: |