Asp.net-Mvc

Asp.net Mvc 4 和 Web Api 中的路由

  • October 8, 2012

我可以同時使用以下兩個路由規則嗎?

config.Routes.MapHttpRoute(
   name: "ActionApi",
   routeTemplate: "api/{controller}/{action}/{id}",
   defaults: new { id = RouteParameter.Optional } );

config.Routes.MapHttpRoute(
   name: "DefaultApi",
   routeTemplate: "api/{controller}/{id}",
   defaults: new { id = RouteParameter.Optional }
);

控制器說是= FruitApiController:ApiController,我希望有以下

  1. List<Fruit> Get()=api/FruitApi/
  2. List<Fruit> GetSeasonalFruits()=api/FruitApi/GetSeasonalFruit
  3. Fruit GetFruits(string id)=api/FruitApi/15
  4. Fruit GetFruitsByName(string name)=api/FruitApi/GetFruitsByName/apple

請幫助我。謝謝

你可以有幾條路線:

public static class WebApiConfig
{
   public static void Register(HttpConfiguration config)
   {
       config.Routes.MapHttpRoute(
           name: "ApiById",
           routeTemplate: "api/{controller}/{id}",
           defaults: new { id = RouteParameter.Optional },
           constraints: new { id = @"^[0-9]+$" }
       );

       config.Routes.MapHttpRoute(
           name: "ApiByName",
           routeTemplate: "api/{controller}/{action}/{name}",
           defaults: null,
           constraints: new { name = @"^[a-z]+$" }
       );

       config.Routes.MapHttpRoute(
           name: "ApiByAction",
           routeTemplate: "api/{controller}/{action}",
           defaults: new { action = "Get" }
       );
   }
}

引用自:https://stackoverflow.com/questions/12775887