RoutePrefix с конфликтами шаблонов apiVersion в документации Swagger - PullRequest
0 голосов
/ 24 марта 2020

У меня есть два ApiController

[ApiVersion( "1" )]
[RoutePrefix( "v{version:apiVersion}/account" )]
public class LoginController1 : BaseController

и

[ApiVersion( "2" )]
[RoutePrefix( "v{version:apiVersion}/account" )]
public class LoginController2 : BaseController

Swagger не показывает Login v2, пока я не изменю RoutePrefix на "v2/account" вместо {version:apiVersion} или изменю То же самое в контроллере V1 также дает тот же эффект.

Это означает, что один из них должен быть не префиксом шаблона. Я использую ASP. NET Api (не. NET Core) и Swagger- Net версия 8.3. 23,1103.

1 Ответ

1 голос
/ 25 марта 2020

Здесь, вероятно, есть несколько проблем.

Соглашение об именовании контроллеров требует наличия суффикса Controller - точно. Это, вероятно, означает, что LoginController1 и LoginController2 будут иметь проблемы, но Login1Controller и Login2Controller должны работать должным образом.

Используете ли вы API управления версиями API ? Вам потребуется / понадобится, чтобы этот пакет поддерживал группировку версий API в генераторе документов Swagger / OpenAPI.

Поскольку вы осуществляете управление версиями по сегментам URL, вы, вероятно, захотите, чтобы соответствующая версия API автоматически подставлялась в пути URL. Этого можно достичь с помощью конфигурации:

configuration.AddVersionedApiExplorer(options.SubstituteApiVersionInUrl = true);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...