Мне удалось добавить примеры в мой веб-API с помощью SwashBuckle.AspNetCore
и Swashbuckle.AspNetCore.Filters
для методов POST:
DTO
public class ExampleDTO
{
public string MyFoo { get; set; }
}
Пример запроса
public class ExampleDTOExample : IExamplesProvider<ExampleDTO>
{
public ExampleDTO GetExamples()
{
return new ExampleDTO()
{
MyFoo = "bar"
};
}
}
Метод контроллера
[SwaggerOperation(
Summary = "...",
Description = "...",
OperationId = "PostFoo"
)]
[SwaggerResponse(200, "Returns ...", typeof(int))]
[HttpPost]
[Route("post-foo")]
public ActionResult<int> PostFoo([FromBody]ExampleDTO request)
{
throw new NotImplementedException();
}
Это прекрасно работает. Когда я нажимаю кнопку «попробовать», в качестве предварительно заданного значения свойства foo появляется «bar».
Однако, когда я пытаюсь сделать то же самое для запроса GET, например, с параметрами из этого запроса текстовое поле не заполняется значением «bar»:
public class ExampleDTO
{
[FromQuery(Name = "foo")]
public string MyFoo { get; set; }
}
Метод контроллера
[SwaggerOperation(
Summary = "...",
Description = "...",
OperationId = "GetFoo"
)]
[SwaggerResponse(200, "Returns ...", typeof(int))]
[HttpGet]
[Route("get-foo")]
public ActionResult<int> GetFoo([FromQuery]ExampleDTO request)
{
throw new NotImplementedException();
}
Как принудительно заполнить текстовое поле значением примера? До сих пор я нашел решение для указания значения по умолчанию, которое я не хочу. Я только хочу использовать атрибуты для значения по умолчанию в Swagger UI.