.NET Core API: отключить расширение нескольких маршрутов в SwaggerUI

#c# #asp.net-core #swagger #swagger-ui #swashbuckle

#c# #asp.net-core #swagger #swagger-пользовательский интерфейс #swashbuckle

Вопрос:

Я использую Swashbuckle.AspNetCore (4.0.1) для генерации простого SwaggerUI для тестирования, как это описано здесь. У моего ApiController есть два маршрута:

 [Route("api/values")]
[Route("api/{systemId}/values")]
  

SwaggerUI отображает все конечные точки контроллера два раза (одна с SystemID, другая без SystemID). Это хорошо, но проблема в том, что, когда я нажимаю, например, /api/values/example SwaggerUI тоже расширяется api/{systemId}/values/example . Обе конечные точки обращаются к одному и тому же общедоступному методу C # внутри контроллера, понятно, почему SwaggerUI открывает оба. Но это раздражает и сбивает с толку.

Возможно ли остановить это поведение?

Ответ №1:

Добавьте Name свойство к маршруту.

 [Route("api/values", Name = "values1")]
[Route("api/{systemId}/values", Name = "values2")]
  

Это создаст разные идентификаторы в div , содержащие спецификации конечной точки, поэтому он будет расширять только тот, который вам нужен.

Комментарии:

1. Также была проблема с перегруженными методами в моем контроллере.