2017-03-13 15 views
3

自動生成スワッガー定義で使用されているモデルの "displayName"を調整しようとしています。生成されたモデル名をカスタマイズする - Swagger UI

これはSwaggerの名前にのみ影響します。つまり、コード内の名前空間はそのまま残りますが、Swagger UIからモデルを見るとカスタム名が表示されます。

現在、コードから返されるモデル名は名前空間で、次のようになります。b.c.d.e.f、コードに属性を追加し、スワッガードキュメントの名前をマスクしたいので、ドキュメント/ Swaggerの定義が生成されると、代わりにCustomSwaggerNameと表示されます。

私は、Swashbuckle(希望)とSwaggerGenを含むツールを使用していくつかのAPI(C#)を使用していますが、今のところ、可能な限り、どちらでも対応していきたいと思います。

私が正しく見えるように見えるの属性使用して試してみた:いいえ運がよければ

[ResponseType(typeof(Company)),DisplayName("NewCompany")] 
[SwaggerResponse(200,"NewCompany",typeof(object))] 

を。私も何かを探して、SwashBuckle git repoを閲覧しました。

私が達成しようとしていることをさらに説明するのに役立つイメージ。 enter image description here

これは奇妙なユースケースのように思えるかもしれませんが、いくつかの比較でSwagger定義を使用するAWS API Gatewayオートメーション用のツール用です。

答えて

0

答えは次のとおりです。IDocumentFilterを使用します。ここでは

private class ApplyDocumentFilter_ChangeCompany : IDocumentFilter 
    { 
     public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer) 
     { 
      if (swaggerDoc.definitions != null) 
      { 
       swaggerDoc.definitions.Add("Company123", swaggerDoc.definitions["Company"]); 
      } 
      if (swaggerDoc.paths != null) 
      { 
       swaggerDoc.paths["/api/Company"].get.responses["200"][email protected] = "#/definitions/Company123"; 
      } 
     } 
    } 

はコードです: http://swashbuckletest.azurewebsites.net/swagger/ui/index#!/Company/Company_Get

https://github.com/heldersepu/SwashbuckleTest/commit/671ce648a7cc52290b4ad29ca540b476e65240e6

そしてここでは、最終的な結果であり、

関連する問題