Swagger UI 显示camelCase 参数而不是PascalCase

Kis*_*nav 5 swagger swashbuckle asp.net-core asp.net-core-webapi swashbuckle.aspnetcore

我在 Asp.Net Core 3.1 API 中使用 NewtonSoft.json 和 Swashbuckle.AspNetCore 版本 5.3.3。

默认情况下,在 Asp.Net Web API 中,2 个输入和输出参数大小写为 PascalCase。

现在我正在迁移到 .Net Core API,其中默认情况下是驼峰式大小写。

因此,我通过在 Startup.cs 中添加以下代码将其更改为使用 PascalCase:

services.AddControllers()
            .ConfigureApiBehaviorOptions(options =>
            {
                options.SuppressModelStateInvalidFilter = true;
            })
            .AddNewtonsoftJson(options =>
            {
                // Use the default property (Pascal) casing
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
            });//Configure Newtonsoft as JSON serializer.
Run Code Online (Sandbox Code Playgroud)

但是在 Swagger UI 中,它以驼峰命名显示输入和输出参数,而 API 的响应包含以 PascalCase 显示的值。

我用谷歌搜索但在 AddSwaggerGen DescribeAllParametersInCamelCase() 中找到了一个方法,它将所有参数转换为驼峰式大小写。

是否有 DescribeAllParametersInPascalCase() 方法?

如何配置 Swagger/Swashbuckle 以在 PascalCase 中显示输入/输出参数?

下面是一个例子:

在此处输入图片说明

ttu*_*tes 7

如果您仍在Newtonsoft.JsonAsp.Net Core 3.1 中使用而不是新的 default System.Text.Json.

通过以下方式为 Asp.Net Core 3.1 配置 Newtonsoft:

services.AddControllers().AddNewtonsoftJson(x => {
  // My config is Pascal Case
  x.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
Run Code Online (Sandbox Code Playgroud)

您还需要Swashbuckle.AspNetCore.Newtonsoft通过在之后添加以下内容来安装并选择加入services.AddSwaggerGen(...

services.AddSwaggerGenNewtonsoftSupport();
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以像这样配置 JsonSerializerOptions:

.AddJsonOptions(opt => opt.JsonSerializerOptions.PropertyNamingPolicy = null)
Run Code Online (Sandbox Code Playgroud)

  • 我把这个放在哪里?我应该在哪个对象上调用 .AddJsonOptions? (3认同)