使用Swashbuckle时,将全局项添加到swagger.json中



我正在使用Swashbuckle生成一个swagger文件,然后将其上传到Google端点。

谷歌端点需要这两个parm(主机和x-Google-backend(

"host": "XXXX-ax7nuhuyua-uc.a.run.app",
"x-google-backend": {
"address": "https://YYYY-dev-ax7nuhuyua-uc.a.run.app",
"protocol": "h2"
},

这些需要添加到与招摇、信息、路径相同的级别

有人能告诉我如何扩展Swashbuckle生成的swagger文件以包括这些全局参数吗?

使用ASPNET核心

在这种情况下,您可以直接在SwaggerDocStartup.cs中添加到Extensions变量。


services
.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
// Any other properties
Extensions = new Dictionary<string, IOpenApiExtension>
{
{
"x-google-backend", new OpenApiObject
{
{"address", new OpenApiString("https://YYYY-dev-ax7nuhuyua-uc.a.run.app")},
{"protocol", new OpenApiString("h2")}
}
},
{
"host", new OpenApiString("XXXX-ax7nuhuyua-uc.a.run.app")
}
}
});
});

我认为您可以通过创建如下操作过滤器来实现这一点:

public class AddParameterOperationFilter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
// add your parameters here
operation.Parameters.Add(new OpenApiParameter());
}
}

在Startup.cs中,您可以使用以下方法将此过滤器添加到swagger DI管道中:

services.AddSwaggerGen(options =>
{
options.OperationFilter<AddParameterOperationFilter>();
});

免责声明:我还没有尝试过这个特定的问题,但我已经使用操作过滤器自定义swagger文档。

最新更新