2016-01-28 3 views
1

Был ли быстрый вопрос относительно управления версиями в Web Api 2.0.Версии в Web API 2

Я разработал полностью RESTful API, однако у меня есть два контроллера с тем же именем.

Я поместил их в пространства имен diff в соответствии с отдельными папками. (например, папки v1 и v2).

enter image description here

Я также правильность настройки маршрутизации, используя обычную NamespaceHttpControllerSelector. Итак, до сих пор все работает правильно.

У меня был вопрос, однако ... это возможно еще версионности для контроллера электронных писем даже если я ставлю EmailsController на уровне Root?

E.g.

Контроллеры/v1/EmailControllers

Контроллеры/EmailsControllers

ли это еще возможно?

Edit:

Я забыл упомянуть, что я не использовал атрибут RoutePrefix, потому что я продолжал получать ошибки на моем RouteConstraint.

Я украшен мои методы действий со следующими (который, кажется, немного излишним, поскольку они в основном имеют те же пространство имен):

[Route("api/{apiVersion1:ApiVersion1Constraint(v1)}/emails/LogEmails", Name = "LogEmailsRoute_1")]

ответ

0

Вы должны использовать RoutePrefix атрибут на контроллере. Подробнее here.

+0

Спасибо за ответ. Мое первое намерение состояло в том, чтобы использовать атрибут RoutePrefix на уровне контроллера. Хотя, я получил многочисленные ошибки, заявляя, что ограничение маршрута не работает. Однако я проверю эту ссылку. –

0

Вы пробовали с [ApiVersion] атрибут

[ApiVersion("1.0", Deprecated = true)]  
    [ApiVersion("2.0")] 
    [ApiVersion("3.0")] 
    [Route("api/v{version:apiVersion}/email")] 
    public class Email2Controller : Controller { 

    [HttpGet] 
    public string Get() => "Email v2!"; 

    [HttpGet, MapToApiVersion("3.0")] 
    public string GetV3() => "Email v3!"; 

    } 
+0

Мне удалось это решить некоторое время назад с помощью Route Controller. Но спасибо за ваш ответ. –