2014-02-04 2 views
0

Я пытаюсь настроить маршрут в своем веб-проекте api, но у меня проблемы.Маршрутизация в Web Api

Я пытаюсь получить URL, чтобы быть следующим за мой метод активизируются в моем AppsController:

/apps/{id}/activate/ 

Я попытался следующие в WebApiConfig.cs

config.Routes.MapHttpRoute(
      name: "ActivateAsset", 
      routeTemplate: "{controller]/{id}/{type}/", 
      default: new { controller = "Apps", type = RouteParameter.Optional } 
     ); 

который работает, однако, это испортит остальную часть маршрутизации; когда я загружаю api, он автоматически выполняет Get on my AppsController, который я не хочу, чтобы он делал!

Любые идеи о том, как я должен отображать маршруты?

ответ

0

Right, отсортированные ... это был вопрос с упорядочением маршрутов

Я обновил свой WebApiConfig.cs следующим образом:

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

     config.Routes.MapHttpRoute(
      name: "AppsActivation", 
      routeTemplate: "{controller}/{id}/{type}", 
      defaults: new { controller = "Apps", type = RouteParameter.Optional } 
     ); 
+0

Кроме того, вы можете использовать {действие} '' параметр. Это позволит вам специально вызвать функцию из вашего API. Имя действия можно обозначить в коде кода API, используя '' (в VB.net). Таким образом, ваш API не будет путать ваши маршруты еще раз ... если вы не ошиблись в параметре где-либо или не забыли сделать вашу функцию API общедоступной ... что я сделал слишком много раз. – Lopsided

0

Web API 2 поддерживает новый тип маршрутизации, называемый маршрутизацией атрибутов. Как следует из названия , атрибутная маршрутизация использует атрибуты для определения маршрутов. Маршрутизация атрибутов дает вам больше контроля над URI в вашем веб-интерфейсе. API.

[Route("apps/{id}/activate")] 
public App Index(int id) { ... } 

Подробнее о Attribute Routing

Смежные вопросы