2017-07-14 92 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

相關問題