如何使用Swashbuckle设置“参数内容类型”?

lon*_*nix 6 swagger swagger-ui swashbuckle asp.net-core-2.2

我招摇用户界面会显示“参数的内容类型”与各条目:"application/json-patch+json""text/json""application/json",和"application/*+json"

我只想要"application/json"

回购上有一个类似的未解决问题,它使用以下视觉效果(旧版ui,但思路相同):

在此处输入图片说明

有什么办法可以设置这个吗?

Swashbuckle.AspNetCore版本4.0.1
Swashbuckle.AspNetCore.Filters版本4.5.5

Dai*_*Dai 9

使用[Produces][Consumes]属性。Swashbuckle(以及其他类似NSwag的对象)会将其转换为适当的Swagger文档。

[Consumes]属性的构造函数的第一个参数是String contentType

public ConsumesAttribute ( string contentType, params string[] otherContentTypes );
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/zh-cn/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 )
    {
        // 
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 有没有一个全局的方法来设置这个? (3认同)
  • 太棒了!为了胜利:`[Consumes(MediaTypeNames.Application.Json)]`-没有魔术字符串:) (2认同)