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

.NET 6 Minimal API如何在Swagger中定义枚举参数

在.NET 6 Minimal API中实现Swagger枚举下拉框

可以实现和控制器API一致的Swagger枚举下拉效果,只需调整配置与参数绑定方式,具体步骤如下:

1. 确认枚举定义

确保你的枚举类型定义正常:

public enum GeometryType
{
    WKT,
    GeoJson
}

2. 配置SwaggerGen识别枚举

在Program.cs的Swagger配置中,添加枚举序列化规则,让Swagger生成枚举可选值:

builder.Services.AddSwaggerGen(c =>
{
    // 将枚举以字符串形式展示并生成下拉选项
    c.DescribeAllEnumsAsStrings();
    
    // 可选:若需为枚举添加描述,可启用注解支持
    c.EnableAnnotations();
});

3. 显式绑定Minimal API参数

Minimal API默认参数绑定不会自动标记枚举类型的元数据,需在端点定义中显式指定绑定源并启用OpenAPI生成:

app.MapGet("/geometry", ([FromQuery] GeometryType? type) =>
{
    // 业务逻辑实现
    return Results.Ok($"选中类型:{type}");
})
.WithName("GetGeometry")
.WithOpenApi(); // 关键:触发Swagger生成该端点的完整Schema,包含枚举信息

4. 验证效果

启动项目后访问Swagger页面,/geometry端点的type参数会显示为包含WKT、GeoJson的下拉框,而非普通字符串输入框。

常见问题排查

  • 若未生效,检查是否遗漏.WithOpenApi()调用:该方法强制Swagger生成端点的详细元数据,包括枚举类型信息。
  • 确认DescribeAllEnumsAsStrings()已添加到SwaggerGen配置,它会让Swagger使用枚举名称而非数值,并生成可选值列表。
  • 可空枚举(GeometryType?)会自动添加null作为可选选项,符合参数定义。

内容的提问来源于stack exchange,提问作者A Wheeler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:37:13