2017-07-14 15 views
0

windows' tutorialを使用してWeb APIプロジェクトにjsonファイルを取得することに問題はありませんでした。Swashbuckleを使ってyaml swaggerを生成する

私はyamlファイルを取得できるようにしたいと考えています。しかし問題は、これを可能にするために見つけることができるフックがないことです。

誰でも知っている回避方法この問題はありますか?

答えて

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

関連する問題