web-dev-qa-db-ja.com

スワッシュバックルを使用して「パラメーターコンテンツタイプ」を設定するにはどうすればよいですか?

私のswagger uiは、「パラメーターコンテンツタイプ」をさまざまなエントリで示しています:"application/json-patch+json""text/json""application/json"、および"application/*+json"

"application/json"のみが必要です。

このビジュアルを使用する similar 未解決の問題がこのビジュアルにあります(古いUI、ただし同じアイデア):

enter image description here

これを設定する方法はありますか?

Swashbuckle.AspNetCoreバージョン4.0.1
Swashbuckle.AspNetCore.Filtersバージョン4.5.5

8
lonix

使用 [Produces]および[Consumes]属性。 Swashbuckle(およびNSwagのような他のもの)は、それらを適切なSwaggerドキュメントに変換します。

[Consumes]属性のコンストラクタの最初のパラメータはString contentType

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

https://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( "application/json" )]
    [Produces( typeof(MyResponseDto) )
    public async Task<IActionResult> Post( [FromBody] MyRequestDto dto )
    {
        // 
    }
}
14
Dai