In MVC and WebApi you can add parameter constraints to your routes (see http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#constraints). You can even use regular expressions for the parameter constraints. However, I'm wondering if it's possible to use a regular expression in the non-parameter portion of my route.

For example, I'm trying to version my API in the actual URI like this:

/api/v3/SomeResource

Where v3 indicates that it's version 3 of the API. If I'm on version 3 of my API it is likely that many of the actions have been unchanged throughout all three versions and would hence need to respond to:

/api/v1/SomeResource
/api/v2/SomeResource
/api/v3/SomeResource

Therefore, I would like to just be able to put a regex in my route attribute like this: [Route("api/v(1|2|3)/SomeResource")] but it appears as though it doesn't treat the v(1|2|3) as a regex and instead treats it as a literal. In other words, a request to /api/v1/SomeResource isn't going to this action.

Is it possible to accomplish what I'm trying to accomplish? is there a way to put a regex in my route?

Thanks in advance!

Related posts

Recent Viewed