Attribute Routing

One of the new things that seems to have past me by when working with ASP MVC / Web API is Attribute Routing. This is not intended to be a big blog post, but will show you one reason why Attribute Routing is useful.


Imagine we have this Web API controller, which are both valid GET urls


Which one of these would be chosen when hitting the ValuesController url : http://localhost:1744/api/values

In fact if you look at this screen shot you will see it is an issue for Web API routing



Mmmm maybe there is something we can do about this.In fact there is we just need to grab the fairly new Nu-Get package for AttributeRouting.WebApi

Install-Package AttributeRouting.WebApi


After you have run this you will get a automatically created VB|C# file that sets up your WebApi project to allow AttributeRouting. It looks like this


Now that we have the infrastructure in place we can start to use the new RoutingAttribute types.


One of the really useful one is HttpRouteAttribute, which I can use like this:




Which now allows me to do go to this url with ease : http://localhost:1744/api/values/last

Which I personally find much easier than defining loads of custom routings manually. Ok they are still manual, but I do find attributes easier to use.




I have just shown one thing that the new AttributeRouting NuGet package allows. For more information you can see these few posts which are more in depth.