Web API Routing - api/{controller}/{action}/{id} “dysfunctions” api/{controller}/{id}

前端 未结 5 772
一向
一向 2020-12-02 06:16

I have the default Route in Global.asax:

 RouteTable.Routes.MapHttpRoute(
         name: \"DefaultApi\",
         routeTemplate: \"api/{controller}/{id}\",
          


        
5条回答
  •  南笙
    南笙 (楼主)
    2020-12-02 07:04

    You can solve your problem with help of Attribute routing

    Controller

    [Route("api/category/{categoryId}")]
    public IEnumerable GetCategoryId(int categoryId) { ... }
    

    URI in jquery

    api/category/1
    

    Route Configuration

    using System.Web.Http;
    
    namespace WebApplication
    {
        public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
                // Web API routes
                config.MapHttpAttributeRoutes();
    
                // Other Web API configuration not shown.
            }
        }
    }
    

    and your default routing is working as default convention-based routing

    Controller

    public string Get(int id)
        {
            return "object of id id";
        }   
    

    URI in Jquery

    /api/records/1 
    

    Route Configuration

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Attribute routing.
            config.MapHttpAttributeRoutes();
    
            // Convention-based routing.
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
    

    Review article for more information Attribute routing and onvention-based routing here & this

提交回复
热议问题