Play FrameworkでSwaggerモジュールを接続します

Swaggerを使用したPlayフレームワークのドキュメント化

swaggerモジュールをセットアップするための元のソース


Play Frameworkは、以前Typesafeと呼ばれていた会社(現在はLightbend)のJavaおよびScalaプログラミング言語用のMVC Webフレームワークです。


ウェブサイト:


プレイフレームワーク

Habrからの記事:


Playでの作業の印象! フレームワーク2.1 + Java

ウィキ


プレイ(フレームワーク)

プログラマーノート


Playフレームワーク-あなたがそれについて知りたいと思っていたが、何らかの理由で尋ねることを恐れていたすべて

Swaggerは、設計と文書化からテストと展開まで、API開発ライフサイクル全体にわたるツールのホストです。


ウェブサイト:


Sw歩

Habrからの記事:


#マイクロサービスのドキュメント

RESTful APIを記述するための3つの最高のツール

wiki:


Openapi

Swagger(ソフトウェア)

導入から離れて、オンザフライで生成されるAPIドキュメントのインストールを開始できます。


デモンストレーションのために、2番目のバージョンのPlayフレームワークを使用します: Play 2


Swaggerモジュール


API仕様の自動生成には、 swagger-play2モジュールが必要です


Swagger UI


オフィスで。 Swagger.io WebサイトはSwagger UIを提供します。これはjson形式のSwagger仕様を受け入れ、APIの学習、実験、および理解のための動的なWebインターフェースを生成します。


Playをカスタマイズする


それでは、swaggerモジュールの統合を始めましょう。 テストには、Play Frameworkバージョン2.6.3


  1. build.sbtアセンブリファイルに依存関係としてプラグインを追加します


    libraryDependencies += "io.swagger" %% "swagger-play2" % "1.6.0"


  2. conf/application.confSwaggerモジュールを接続しconf/application.conf

  play.modules.enabled += "play.modules.swagger.SwaggerModule" api.version = "v1" // Specify the api version. 

conf/application.conf設定を追加して、Swagger仕様の追加フィールドを自動生成できます。


文書化API



以下にサンプルコードを示します。 次のコードをコントローラークラスに追加します。


 @Api(value = "Example Controller", produces = "application/json") 

ドキュメントを追加する必要があるメソッドごとに、次の注釈を定義する必要があります。
標準の応答クラスは既に提供されています。ここではResponse.classです。


  @ApiOperation(value = "Get API", notes = "Get list of id & values.", response = Response.class) 

APIが返すことができる追加の応答ごとに、次の注釈を追加できます。


 @ApiResponses({ @ApiResponse(code = 403, message = "Invalid Authorization", response = ErrorStatus.class), @ApiResponse(code = 500, message = "Internal Server Error", response = ErrorStatus.class) }) 

コントローラーメソッドのパラメーターは、次のように追加できます。


 @ApiOperation(value = "Get User", response = User.class) public Promise<Result> getUser( @ApiParam(value = "User Id", name = "userId") String userId){ User user = getUser(userId); return ok(user); } 

ルート


conf/routes設定ファイルにルートを追加することで、自動生成されたSwagger仕様にアクセスできますconf/routes


 GET /docs/swagger.json controllers.ApiHelpController.getResources 

これで、 /docs/swagger.jsonからSwagger仕様に到達できます


Swagger UIをPlayフレームワークに追加


Swagger UIはHTML / JSを備えた動的なフロントエンドであるため、主にNginxまたはhttpdを介して提供できます。
または、playフレームワークからSwagger UIを提供することもできます。
また、APIとSwagger UIが異なるドメインにある場合に発生する可能性があるCORSエラーの問題も解決します。
Swagger UI 配布キットをPlayプロジェクトの/public/swagger-uiにコピーします。


ルートの設定ファイルで、次のディレクトリを追加します


 GET /docs/ controllers.Assets.at(path="/public/swagger-ui",file="index.html") GET /docs/swagger.json controllers.ApiHelpController.getResources GET /docs/*file controllers.Assets.at(path="/public/swagger-ui",file) 

アプリケーションのルートにあるSwaggerのデフォルト仕様に仕様をリダイレクトする場合は、このルートをルート構成に追加します。


 GET / controllers.Default.redirect(to = "/docs/") 

index.htmlを更新して、Swagger仕様へのリンクを変更します。



 var url = window.location.search.match(/url=([^&]+)/); if (url && url.length > 1) { url = decodeURIComponent(url[1]); } else { url = "http://petstore.swagger.io/v2/swagger.json"; } 


 var url = window.location.search.match(/url=([^&]+)/); if (url && url.length > 1) { url = decodeURIComponent(url[1]); } else { url = "swagger.json"; } 

APIを調べる


sbtして起動したら、 http://localhost:9000/docs/にアクセスして、 Swagger UIがライブで動作していることを確認します。


よし



まだ十分ではない


Swagger UIにはいくつかの問題があります。



合計


Total Swagger Spec / UIは、任意のAPIへのアクセスを記述および提供するための優れたツールです。


Swagger接続のビデオはここで見ることができます



Source: https://habr.com/ru/post/J338396/


All Articles