Reputation: 2066
If I decorate this web api controller with the Route attribute I can hit the method
[Route("api/v{version}/bank-accounts")]
public class BankAccountsController : ApiController
{
[HttpGet]
public HttpResponseMessage GetBankAccounts()
{
//...
}
}
But if I use RoutePrefix instead I can't make it work unless at the same time I use Route("")
[RoutePrefix("api/v{version}/bank-accounts")]
public class BankAccountsController : ApiController
{
[HttpGet]
[Route("")]
public HttpResponseMessage GetBankAccounts()
{
//...
}
}
Is this intended, or I'm messing things?
Thanks
Upvotes: 13
Views: 11590
Reputation: 1968
You are missing it... The route prefix, is just that, a prefix. You should move part of the path template to the route attribute. Like this.
[RoutePrefix("api/v{version}")]
public class BankAccountsController : ApiController
{
[HttpGet]
[Route("bank-accounts")]
public HttpResponseMessage GetBankAccounts(string version)
{
//...
}
}
Upvotes: 7
Reputation: 57939
Right, this is an expected behavior... RoutePrefix
attribute by itself doesn't add any routes to the route table where as Route
attributes do...
Upvotes: 22