You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 9 Minimal API如何全局配置Query参数与OpenAPI驼峰命名?

全局配置查询字符串参数为驼峰命名

在ASP.NET Core中,无需逐个给属性添加[FromQuery(Name = "...")]特性,通过以下全局配置即可让所有查询参数自动使用驼峰命名:

方式一:基于内置命名策略配置

在Program.cs(ASP.NET Core 6+)或Startup.cs的ConfigureServices方法中添加配置:

使用System.Text.Json的项目

builder.Services.AddControllers(options =>
{
    // 绑定查询参数时应用驼峰命名策略
    options.ModelMetadataDetailsProviders.Add(new SystemTextJsonValidationMetadataProvider());
})
.AddJsonOptions(options =>
{
    // 可选:保证JSON序列化也使用驼峰,和查询参数命名统一
    options.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase;
});

使用Newtonsoft.Json(Json.NET)的项目

builder.Services.AddControllers()
.AddNewtonsoftJson(options =>
{
    options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
})
.AddMvcOptions(options =>
{
    options.ModelMetadataDetailsProviders.Add(new NewtonsoftJsonValidationMetadataProvider());
});

方式二:自定义元数据提供器(灵活扩展场景)

如果需要更精细的控制,可以自定义元数据提供器覆盖查询参数命名规则:

public class CamelCaseQueryMetadataProvider : IDisplayMetadataProvider
{
    public void CreateDisplayMetadata(DisplayMetadataProviderContext context)
    {
        if (context.Key.MetadataKind == ModelMetadataKind.Property)
        {
            // 将属性名转换为驼峰格式作为查询参数名
            var camelCaseName = System.Text.Json.JsonNamingPolicy.CamelCase.ConvertName(context.Key.Name);
            context.DisplayMetadata.PropertyName = camelCaseName;
        }
    }
}

// 在Program.cs/Startup.cs中注册
builder.Services.AddControllers(options =>
{
    options.ModelMetadataDetailsProviders.Add(new CamelCaseQueryMetadataProvider());
});

配置完成后,你的参数类可以完全移除[FromQuery]特性,自动生成驼峰命名的查询参数:

public class UsageQueryParams
{
    public ContractType? ContractType { get; set; }
    public long? Limit { get; set; }
}

此时OpenAPI规范中对应的查询参数会自动显示为contractType和limit,同时模型绑定也能正常识别驼峰格式的请求参数。

内容的提问来源于stack exchange,提问作者Bruno Casarotti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:00:56