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.conf



    Swaggerモジュールを接続し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接続のビデオはここで見ることができます








All Articles