使用 Swashbuckle 生成 yaml swagger

Man*_*y42 9 c# asp.net-web-api swagger swashbuckle

json使用Microsoft 的教程在我的 Web API 项目中获取文件没有问题。

由于某些要求,我希望能够检索yaml文件。但问题是我找不到任何钩子来使这成为可能。

有谁知道这个问题的任何解决方法

Vah*_*idN 7

V 5.6支持生成 YAML 文件。如何使用它:

app.UseSwaggerUI(x => { x.SwaggerEndpoint("/swagger/v1/swagger.yaml", "Zeipt Dashboard API"); });
Run Code Online (Sandbox Code Playgroud)


Hel*_*eda 6

一个选项是将IDocumentFilter添加到您的项目中,这里有几个示例:

    private class YamlDocumentFilter : IDocumentFilter
    {
        public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
        {
            string file = AppDomain.CurrentDomain.BaseDirectory + "swagger_yaml.txt";
            if (!File.Exists(file))
            {
                var serializer = new YamlSerializer();
                serializer.SerializeToFile(file, swaggerDoc);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

...

    private class YamlDocumentFilter : IDocumentFilter
    {
        public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
        {
            string file = AppDomain.CurrentDomain.BaseDirectory + "swagger.yaml";
            if (!File.Exists(file))
            {
                var serializer = new YamlDotNet.Serialization.Serializer();
                using (var writer = new StringWriter())
                {
                    serializer.Serialize(writer, swaggerDoc);
                    var stream = new StreamWriter(file);
                    stream.WriteLine(writer.ToString());
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但这取决于您的项目是否可以接受添加对 YamlSerializer 或 YamlDotNet 的额外引用。