Версии веб-API со ссылкой по умолчанию

1

У меня есть веб-api с двумя версиями v1 и v2, они похожи на папки в контроллерах, эти папки содержат контроллеры с одинаковыми именами и методами. Мой WebApiConfig выглядит так

       config.Routes.MapHttpRoute(
            "DefaultApi", 
            "api/v{version}/{controller}/{id}",
            new {id = RouteParameter.Optional}
            );
        config.Services.Replace(typeof(IHttpControllerSelector), new HttpControllerSelector((config)));

Соответственно, мои ссылки выглядят как api/v1/custum/get?id=3 и api/v2/custum/get?id=3, как я могу делать навигацию по ссылке api/custum/get?=3 в последней версии, т.е. при v2/custum/get?id=3

Теги:
asp.net-mvc
asp.net-web-api

2 ответа

0

Имейте конфигурацию маршрута для версий API и резервной конфигурации. Например,

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

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

Первый отображает вызовы с конкретной версией. Второй вариант не имеет версии на маршруте. В вашем HttpControllerSelector попробуйте получить значение для version, если оно не существует для второй конфигурации маршрута, установите его по умолчанию.

0

Вы можете установить значение по умолчанию для параметра версии следующим образом:

  config.Routes.MapHttpRoute(
            "DefaultApi",
            "api/{version}/{controller}/{id}",
            new
            {
                version="v2",
                id = RouteParameter.Optional
            }
  • 0
    это не работает, в данных маршрута он не может видеть версию по умолчанию ...
  • 0
    Пожалуйста, посмотрите на мой пример, я заменяю v {version} на {version}
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню