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

如何为Swagger UI设置从appsettings.json读取的动态默认值?

给Swagger UI参数设置来自appsettings.json的默认值

1. 准备配置项

先在appsettings.json(或对应环境的配置文件)里添加要用作默认值的配置项,示例:

{
  "SwaggerDefaults": {
    "SomethingDefault": "dev_env_default_value"
  }
}

2. 编写自定义Swagger操作过滤器

借助Swashbuckle.AspNetCore的IOperationFilter,动态修改Swagger文档中的参数默认值,代码如下:

using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

public class ConfigDefaultValueFilter : IOperationFilter
{
    private readonly IConfiguration _config;

    public ConfigDefaultValueFilter(IConfiguration config)
    {
        _config = config;
    }

    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        // 定位到目标参数something
        var targetParam = operation.Parameters?.FirstOrDefault(p => p.Name.Equals("something", StringComparison.OrdinalIgnoreCase));
        if (targetParam != null)
        {
            // 从配置文件读取默认值
            var defaultValue = _config["SwaggerDefaults:SomethingDefault"];
            if (!string.IsNullOrWhiteSpace(defaultValue))
            {
                targetParam.Schema.Default = new OpenApiString(defaultValue);
            }
        }
    }
}

3. 注册过滤器并配置端点

在Program.cs中把自定义过滤器注册到Swagger服务,同时给目标端点加上WithOpenApi()(最小API默认不生成Swagger文档,必须加此方法才能让过滤器找到对应参数):

var builder = WebApplication.CreateBuilder(args);

// 添加Swagger相关服务
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
    c.OperationFilter<ConfigDefaultValueFilter>();
});

var app = builder.Build();

// 启用Swagger和Swagger UI
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

// 配置你的Post端点,必须包含WithOpenApi()
app.MapPost("/route", async (string something) => await Task.Delay(0))
   .WithOpenApi();

app.Run();

关键说明

  • 不同环境的配置会自动生效,比如生产环境会读取appsettings.Production.json中的对应值,Swagger UI直接显示当前环境的默认值。
  • 如果配置项在appsettings根节点,直接用_config["SomethingDefault"]读取即可,无需嵌套路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:27:17