2017-07-14 95 views

回答

2

的选择将是一个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); 
      } 
     } 
    } 

...

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()); 
       } 
      } 
     } 
    } 

但如果加上取决于你的项目对YamlSerializer或YamlDotNet的附加参考是可以接受的。

+0

这似乎是正确的路要走,我还没有能够验证它。但这可能是因为我正在部署到服务结构。 – Manny42

+0

arghhh! (***服务结构***)是的,你可能需要修改该例子或尝试不同的依赖... – HelderSepu

+0

我添加了一个使用YamlSerializer的示例,代码看起来更简单,我验证了它它适用于Azure:http://swashbuckletest.azurewebsites.net/swagger_yaml.txt – HelderSepu

相关问题