我想为Swagger UI设置默认值。该值应该从appsettings.json中获取,因为它可能会因不同的环境而更改。我该如何做?有这个:
app.MapPost("/route", async (string something) => await Task.Delay(0));
我的期望:something变量在使用swagger用户界面时应该有默认值。它的值应该设置为appsettings json的值。
something
rta7y2nd1#
为此,我们可以定义与DefaultValueAttribute关联的OperationFilter。因此,首先,将最小API方法更改为默认值:
DefaultValueAttribute
OperationFilter
app.MapPost("/route", async ([DefaultValue("__configuration__SomeValue")]string something) => await Task.Delay(0));
然后定义OperationFilter,将定义的值动态替换为appsettings中的值:
public class OperationFilter : IOperationFilter { private readonly IConfiguration _configuration; public OperationFilter(IConfiguration configuration) { _configuration = configuration; } public void Apply(OpenApiOperation operation, OperationFilterContext context) { foreach (var parameter in operation.Parameters) { if (parameter.Schema.Default is OpenApiString @default && @default.Value.StartsWith("__configuration__")) { parameter.Schema.Default = new OpenApiString(_configuration.GetValue<string>(@default.Value.Replace("__configuration__", string.Empty))); } } } }
不知道这是否是最好的方法,但它只是工作,尝试
1条答案
按热度按时间rta7y2nd1#
为此,我们可以定义与
DefaultValueAttribute
关联的OperationFilter
。因此,首先,将最小API方法更改为默认值:
然后定义
OperationFilter
,将定义的值动态替换为appsettings中的值:不知道这是否是最好的方法,但它只是工作,尝试