Обновление: я начинаю задаваться вопросом, связано ли это с ошибкой:
https://github.com/domaindrivendev/Swashbuckle/issues/590
Но предложенный обходной путь, похоже, не решает мою проблему.
Я использую Swashbuckle для создания документации API для проекта C # ASP.NET Web API.
Моя цель - разрешить следующие допустимые URL:
/endpoint/items/123/foo?param2=bar
С обязательным параметром (param1), установленным на «foo», и необязательным параметром (param2), установленным на «bar». Я хотел бы, чтобы оба параметра содержались внутри одного объекта параметра C #. (с другими необязательными параметрами, такими как param3 и т. д.). Несколько конечных точек будут использовать идентичные параметры, и я хотел бы иметь один объект, представляющий параметры.
Детали Swagger / Swashbuckle - это в основном черный ящик, и я не могу понять этого. Я получаю дубликаты в списке параметров.
Пример кода для воспроизведения проблемы:
// This endpoint is generating documentation the way I would like.
[HttpGet]
[Route("endpoint1/items/{id}/{param1}")]
public string GetDataForParameters(int id, string param1, string param2 = null, string param3 = null)
{
return string.Format("Params: {1}, {2}, {3}", id, param1, param2, param3);
}
// This endpoint has the structure I would like, but I get duplicates for param1 in the documentation.
[HttpGet]
[Route("endpoint2/items/{id}/{param1}")]
public string GetDataForParameters(int id, [FromUri(Name = "")]MyParams myParams)
{
return string.Format("Params: {1}, {2}, {3}", id, myParams.Param1, myParams.Param2, myParams.Param3);
}
public class MyParams
{
public string Param1 { get; set;}
public string Param2 { get; set;}
public string Param3 { get; set;}
}
Во втором методе я получаю параметры внутри одного объекта. Но Swagger отображает повторяющуюся запись для «param1».
Снимок экрана: повторяющийся параметр Swagger
Как я могу заставить Swagger / Swashbuckle не отображать вторую запись для "param1"?
Причина наличия этой структуры в том, что у меня есть несколько конечных точек, которые возвращают разные типы данных, но используют общие параметры. Некоторые параметры являются обязательными (и частью идентификатора), поэтому мы хотели бы включить их в URL-адрес с дополнительными параметрами в строке запроса. Я бы предпочел, чтобы объект общего параметра содержал как обязательные, так и необязательные параметры.
Пример кода, созданный с обновлением Visual Studio 2015 1. Проект веб-API ASP.NET по умолчанию. Добавление приведенного выше кода в созданный ValuesController.cs. Установлен пакет Swashbuckle 5.3.1 + зависимости.
param1
как строку запроса, а также членMyParams
. Может быть, в этом причина. - person Amit Kumar Ghosh   schedule 18.02.2016/endpoint2/items/123/{Param1}?param1=foo¶m2=bar
, что недопустимо. Я все еще ищу решение этой проблемы. - person PMBjornerud   schedule 18.02.2016