【发布时间】:2020-02-13 16:32:35
【问题描述】:
我有一个小程序,它接受一个程序集并生成所有相关的OpenApiDocument。现在,我的问题是,这可以导入 Swagger 吗?我知道您可以在创建文档后添加过滤器来修改文档,但我想知道您是否可以将文档提供给 Swagger 并规避自动生成。
在 IDocumentFilter 内部,它允许您修改 Swagger 创建的 OpenApiDocument,但我想使用我自己的 OpenApiDocument。
public interface IDocumentFilter
{
void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context);
}
这里是我想配置 Swagger 以使用预定义的OpenApiDocument:
public void ConfigureServices(IServiceCollection services)
{
services.AddSwaggerGen(setupAction => TODO);
}
public void Configure(IApplicationBuilder app, IApiVersionDescriptionProvider provider)
{
}
以下是我想在配置 Swagger 时在 API 启动中使用的公开可用方法:
public static IEnumerable<OpenApiDocument> CreateDocuments(this Assembly assembly, string title, string description, string name, string email)
{
return ControllerInfo.FindControllers(assembly)
.GroupBy(controller => controller.Version)
.OrderBy(group => group.Key)
.Select(group => CreateDocument(group.Key, group, title, description, name, email));
}
public static string ToJson(this OpenApiDocument document)
{
using var outputString = new StringWriter();
document.SerializeAsV3(new OpenApiJsonWriter(outputString));
return outputString.ToString();
}
【问题讨论】:
标签: c# swagger openapi swashbuckle