Управление версиями с помощью WebAPI .Net Core не работает должным образом - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь внедрить управление версиями URL в моем приложении .Net Core WebAPI.Я также использую веб-инструменты Swagger для простоты использования для пользователей.

Теперь, пытаясь ввести управление версиями в моем приложении, я сослался на документы здесь: https://github.com/Microsoft/aspnet-api-versioning/wiki/New-Services-Quick-Start#aspnet-core

Теперь я внес следующие изменения в свой код:

Запуск.cs / ConfigureServices Я добавил код ниже:

services.AddApiVersioning(options => {
                    options.AssumeDefaultVersionWhenUnspecified = true;
                });

Теперь, аннотации моего контроллера перед добавлением любого вида версий выглядят так:

    [Produces("application/json")]
    [Route("api/controllerName")]

и выдает URL, который выглядиткак что-то ниже:

http://localhost:12003/swagger/#!/Workspace/GetAll

Теперь я добавил аннотации ниже, чтобы включить поддержку версий API:

. [ApiVersion("1.0")] [Produces("application/json")] [Route("api/v{version:apiVersion}/workspace")]

и теперь, когда я нажимаюпо тому же методу, указанному в моем пользовательском интерфейсе

, URL выглядит следующим образом:

http://localhost:12003/swagger/#!/controllername/ApiV_versionGetAll

В то время как я ожидал, было что-то вроде:

http://localhost:12003/swagger/#!/controllername/V1.0/GetAll

Также на моем чванстве теперь прямо просят ввести номер версии.Поэтому я думаю, что мой вопрос сводится к двум основным пунктам:

  • Как я могу исправить свой URL?и что я делаю не так?
  • Почему swagger теперь просит меня ввести номер версии в интерфейсе API, когда я явно заявил, что версия будет 1.0 в аннотации контроллера?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Что вам не хватает, так это дополнительный пакет для управления версиями API, который поддерживает API Explorer с учетом версии API:

https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer

Install-Package Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer

Проводник API - это то, как генераторы Swagger похожиSwashbuckle делают всю свою работу.Источник и ссылки также доступны в репозитории версий API.

Для достижения желаемого результата необходимо настроить подстановку версии API в URL:

services.AddMvcCore().AddVersionedApiExplorer( options => options.SubstituteApiVersionInUrl = true );

Примечание: , что вызов AddMvcCore() больше не требуется в API Versioning 3.0 +

Документация и примеры доступны в официальном репозитории API-версий.Я рекомендую ознакомиться с API-документацией вики-темы:

https://github.com/Microsoft/aspnet-api-versioning/wiki/API-Documentation

Принятый ответ расширяет этот пакет, и это хорошо, пока он остается актуальнымсо вкусом API версии, которую вы используете.Контроль версий API всегда поставляется с совместимыми расширениями API Explorer в каждом выпуске.

0 голосов
/ 17 октября 2018

Настройка API-версий с помощью Swagger - это действительно сложная задача, так как множество частей необходимо правильно настроить.

К счастью для нас, есть отличные пакеты для нюгетеров, называемые SwashbuckleAspNetVersioningShim, который решает это превосходным образом.

Добавьте его

Install-Package SwashbuckleAspNetVersioningShim -Version 2.2.1

Затем следуйте инструкциям здесь

...