Route prefixes are associated with routes by design in attribute routing.
It is used to set a common prefix for an entire controller.
If you read the release notes that introduced the feature you may get a better understanding of the subject.
ASP.NET Web API 2
Attribute routing
ASP.NET Web API now supports attribute routing, thanks to a
contribution by Tim McCall.
With attribute routing you can specify your Web API routes by
annotating your actions and controllers like this:
[RoutePrefix("orders")]
public class OrdersController : ApiController
{
[Route("{id}")]
public Order Get(int id) { }
[Route("{id}/approve")]
public Order Approve(int id) { }
}
Attribute routing gives you more control over the URIs in your web
API. For example, you can easily define a resource hierarchy using a
single API controller:
public class MoviesController : ApiController
{
[Route("movies")]
public IEnumerable<Movie> Get() { }
[Route("actors/{actorId}/movies")]
public IEnumerable<Movie> GetByActor(int actorId) { }
[Route("directors/{directorId}/movies")]
public IEnumerable<Movie> GetByDirector(int directorId) { }
}
What’s New in ASP.NET Web API 2.1
What’s New in ASP.NET Web API 2.2
A really good article on the subject
ASP.NET 5 Deep Dive: Routing
While no expert on the subject, here is my understanding of how this works.
With attribute routing the framework inspects the route attribute on the actions of a controller in order to create route entries to add to the route table. So as long as you are using attribute routing you are going to be using the [RouteAttribute]
. Without this attribute the action will default back to convention-based routing. The RoutePrefixAttribute
is an extensibility point that allows you more control of how you define your routes/Urls. The release notes say as much.
Other than my understanding and the last link provided, everything else was quoted from MS documentation.