2015-07-27 3 views
0

Web API В Web API маршрутизации по умолчанию, как показано ниже:Маршрутизация по умолчанию для контроллера

routes.MapHttpRoute(
    name: "API Default", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

А теперь вызовы различных контроллеров могут быть сделаны, как показано ниже:

/api/contacts 
/api/contacts/1 
/api/products/gizmo1 

Я хочу, чтобы изменить его для сопоставления url по умолчанию с данным контроллером: например Если я делаю следующее

  • /Api он должен отвечать, как /API/контакты
  • /апи/1 он должен отвечать как /API/контакты/1

Какие изменения я должен внести в маршрутизацию?

Приветствия

+0

вы можете добавить атрибут маршрут на верхней части контакты действия что-то вроде этого ... [Маршрут (» ")] теперь он будет вызывать это, когда вы вызываете только API – Prashant

+0

Кажется, что [Route (" ")] работает с web api 2.0, я все еще использую web api 1.0, поскольку сервер имеет .net 4.0 – user2739418

ответ

0

вам нужно иметь два маршрута, в этом случае, как приведено ниже

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

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new {controller = "contacts", id = RouteParameter.Optional} 
      ); 
Смежные вопросы