RoutePrefix vs Route

前端 未结 2 765
无人共我
无人共我 2020-12-28 13:23

I understand that RoutePrefix doesn\'t add a route to the routing table by itself. On your actions you need to have a Route attribute declared. I a

2条回答
  •  一个人的身影
    2020-12-28 14:20

    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 Get() { } 
        [Route("actors/{actorId}/movies")] 
        public IEnumerable GetByActor(int actorId) { } 
        [Route("directors/{directorId}/movies")] 
        public IEnumerable 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.

提交回复
热议问题