Как установить тип содержимого Parameter с помощью Swashbuckle?

В моем пользовательском интерфейсе swagger отображается «Тип содержимого параметра» с различными записями: "application/json-patch+json", "text/json", "application/json" и "application/*+json".

Я хочу только "application/json".

В репозитории есть похожая нерешенная проблема, в которой используется этот визуальный элемент (более старый интерфейс, но такой же идея):

введите описание изображения здесь

Есть ли способ установить это?

Swashbuckle.AspNetCore версия 4.0.1
Swashbuckle.AspNetCore.Filters версия 4.5.5


person lonix    schedule 03.05.2019    source источник


Ответы (1)


Используйте атрибуты [Produces] и [Consumes]. Swashbuckle (и другие, например NSwag) преобразует их в соответствующую документацию Swagger.

Первым параметром конструктора атрибута [Consumes] является String contentType:

public ConsumesAttribute ( string contentType, params string[] otherContentTypes );

//docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.consumesattribute.-ctor?view=aspnetcore-2.2#Microsoft_AspNetCore_Mvc_ConsumesAttribute__ctor_System_String_System_String__ _

Вот так:

[ApiController]
public class MyController : ControllBase
{
    [HttpPost( "/foo/bar" )]
    [Consumes( MediaTypeNames.Application.Json )] // "application/json"
    [Produces( typeof(MyResponseDto) ) ]
    public async Task<IActionResult> Post( [FromBody] MyRequestDto dto )
    {
        // 
    }
}
person Dai    schedule 03.05.2019