gpt4 book ai didi

c# - Swagger 扩展可能的端点

转载 作者:行者123 更新时间:2023-12-03 20:53:23 25 4
gpt4 key购买 nike

我目前使用 Swagger 来公开我的所有端点,但这些端点目前的格式为:/get/{name}, /put/{name} ,其中名称只能是我在数据库中的那些名称?

是否有可能使 swagger 扩展通用 API 定义以包含所有可能的 API 调用,这意味着所有可能的名称?

最佳答案

我假设您使用的是 .NET Core。
我还没有测试过这个解决方案,但希望它走在正确的轨道上。

在您的 Startup类,您可能正在 ConfigureServices 中注册 Swagger方法,以及您的数据库上下文。

您需要在 AddSwaggerGen 中添加一行注册自定义过滤器。

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<YourContext>();

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });

// Custom filter (could also be a SchemaFilter)
c.ParameterFilter<CustomParametersFilter>();
});
}

这是 CustomParametersFilter类(class):

public class CustomParametersFilter : IParameterFilter
{
private readonly YourContext dbContext;

public CustomParametersFilter(YourContext dbContext)
{
// Here you also have access to IServiceProvider or any dependency
this.dbContext = dbContext;
}

public void Apply(IParameter parameter, ParameterFilterContext context)
{
if (parameter.Name == "some_name")
{
// Use dbContext to retrieve your values
List<string> validValues;
// ...

parameter.Description = string.Join(", ", validValues);
}
}
}
CustomParametersFilter 的代码是一个起点,但可以根据您的需要进行调整。 IParameter (和 OpenApiParameter )提供更多选项。

关于c# - Swagger 扩展可能的端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61895642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com