.NET项目配置Swagger使参数P1为带枚举选项的字符串类型
.NET Swagger 配置Query参数为带枚举下拉的字符串类型
你当前代码的问题是把P1参数的Schema错误定义成了object类型,还嵌套了同名属性,这才导致Swagger把它识别成对象类型。要改成字符串类型并显示下拉枚举,直接给参数的Schema设置为string类型,同时指定枚举值即可,不需要嵌套Properties。
修正后的SwaggerExt类代码:
public class SwaggerExt : IOperationFilter { public void Apply(OpenApiOperation operation, OperationFilterContext context) { if (operation.Parameters == null) return; foreach (var parameter in operation.Parameters) { if (parameter.Name.Equals("P1", StringComparison.OrdinalIgnoreCase)) { // 直接将Schema设置为string类型,并添加枚举值 parameter.Schema = new OpenApiSchema { Type = "string", Enum = new List<IOpenApiAny> { new OpenApiString("value-1"), new OpenApiString("value-2"), new OpenApiString("value-3") } }; // 可选:添加描述说明 parameter.Description = "请选择P1的可选值"; } } } }
关键改动说明
- 移除了
Properties嵌套定义,直接给parameter.Schema赋值字符串类型的Schema - 将
Type从object改为string,确保Swagger识别为字符串参数 - 保留
Enum列表,这样Swagger界面会自动生成下拉选择框
注册Filter的代码保持不变:
c.OperationFilter<SwaggerExt>();
这样修改后,Swagger里的P1参数就会显示为字符串类型的下拉选择框,而不是object类型了。
内容的提问来源于stack exchange,提问作者KA-Yasso
相关产品推荐
相关产品推荐

