2017-08-18 19 views
1

.NetCore(Swashbuckle.AspNetCoreを使用)のドキュメントにSwaggerを使用する動的残りAPIを作成しようとしています。そこで開始する1つの可能な応答でのみ1つのコントローラであるが、ユーザは、後コントローラはSwagger.jsonファイルが生成された後に、プログラムでSwagger.jsonファイルにアクセスする方法

応じて応答するための新しい経路を変換することができるサービスに掲載することにより、「エンドポイント」を追加することができるという意味で動的

これを行うには、swagger.jsonファイルにアクセスして変更するだけでなく、変更を反映するようにUIを変更する必要があります。これは可能ですか?もしそうなら、どのように?

注:あなたは、拡張フィルタとしてスキーマをカスタマイズすることができ、私は私が/{documentname}/swagger.jsonに移動して闊歩ドキュメントにアクセスして見ることができます知っているが、これは私がそれを

+1

サウンズ)、おそらくhttp://editor.swagger.io/#/のようなプログラムによって作成された静的なものを使用することも、YAMLからswagger.jsonを生成することもできます。 Swashbuckleはコントローラ、ルート、モデルを使って定義を生成します – Tseng

答えて

1

を変更することはできません。カスタムフィルター: https://github.com/domaindrivendev/Swashbuckle.AspNetCore#extend-generator-with-operation-schema--document-filters これは、(要求ヘッダーのように)各要求にさらにヘッダーフィールドを装飾するために使用しました。完全なエンドポイントで動作するかどうかはわかりません。しかし、多分それは試してみる価値があります。ここで


更新(編集後)
は全体のエンドポイントを追加したサンプルIDocumentFilterです:Swashbuckle SWAGGERはあなたのための間違ったツールであり、あなたがハード(自分の闊歩スキーマを作成する必要がありますように

private class DocumentFilterAddFakes : IDocumentFilter 
{ 
    private PathItem FakePathItem(int i) 
    { 
     var x = new PathItem(); 
     x.Get = new Operation() 
     { 
      Tags = new[] { "Fake" }, 
      OperationId = "Fake_Get" + i.ToString(), 
      Consumes = null, 
      Produces = new[] { "application/json", "text/json", "application/xml", "text/xml" }, 
      Parameters = new List<IParameter>() 
        { 
         new NonBodyParameter() // Can also be BodyParameter 
         { 
          Name = "id", 
          @In = "path", 
          Required = true, 
          Type = "integer", 
          Format = "int32", 
          @Default = 8 
         } 
        }, 
     }; 
     x.Get.Responses = new Dictionary<string, Response>(); 
     x.Get.Responses.Add("200", new Response() { Description = "OK", Schema = new Schema() { Type = "string" } }); 
     return x; 
    } 

    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context) 
    { 
     for (int i = 0; i < 10; i++) 
      swaggerDoc.paths.Add("/Fake/" + i + "/{id}", FakePathItem(i)); 
    } 
} 
+1

はい、エンドポイント全体で動作します。 – HelderSepu

+1

ここにDocumentFilterAddFakesの出力があります:http://swashbuckletest.azurewebsites.net/swagger/ui/index?filter=Fake#/Fake/Fake_Get0 – HelderSepu

+0

更新のための@HelderSepuに感謝します。 – maerlin

関連する問題