出典: https://www.cnblogs.com/xiaohanghang/p/6018654.html
春ブーツが急速に発展しているので、展開、およびなど便利な機能が、私は春のブートユーザーの大部分は、RESTfulなAPIを構築するために使用されると信じています。また、目的は、通常、マルチパス端末によるRESTfulなAPIの理由を構築しており、これらの端子は、基礎となるビジネス・ロジックの多くを共有することができるので、我々は、抽象層は、同時に、モバイルウェブまたは遠位端の複数のサービスを提供します。
IOSの開発者、Androidの開発者やWeb開発:その結果、当社のRESTfulなAPIは、複数の開発者や複数の開発チームに直面する可能性があります。他のチームと頻繁にコミュニケーションを低減させるため、通常は開発中のコストで、我々はインターフェイスのすべての詳細を記録するために、伝統的な練習RESTfulなAPIドキュメントを作成します、しかし、このアプローチにはいくつかの問題があります。
- 多くのインターフェイス、および複合体の詳細は、それ自体で、これは下流の流行を不平、非常に困難なことである高品質の文書を作成するには、(HTTPリクエスト、HTTPヘッダ、HTTPリクエストのコンテンツなどのさまざまな種類を考慮する必要があります)。
- 時間が経つにつれて、絶えず変更インタフェースは、インタフェース文書を修正するために、すべての回で同期させなければならない、と、厳格な管理の仕組みが存在しない限り、二つの異なるコードを持つ文書がなく、メディアでは、そうでない場合は簡単に不整合が生じます。
上記この問題を解決するために、この記事は重い良きパートナーRESTfulなAPIのSwagger2をご紹介します、それは簡単に春ブーツに統合され、強い組織RESTfulなAPIドキュメントとSpring MVCのプログラムとすることができます。記述内容と実装コードに統合するには、そのメンテナンスのドキュメントので、コードを変更し、一つに統合され、私たちは簡単にコードのロジックを変更すると同時に、ドキュメントを変更することを可能にする一方でそれは、私たちが文書を作成した作業量を減らすことができます。またSwagger2のページには、それぞれのRESTfulなAPIをデバッグするための強力なテスト機能を提供します。以下に示すように、特定の結果:
以下、具体的に春ブーツ場合Swagger2の使用を記載しています。まず、我々はあなたがこのタイプのコンテンツを行っていない場合、我々はあなたが読むことをお勧めし、達成するために春のRESTful APIプロジェクトの起動を必要とする
春ブーツはRESTfulなAPIやユニットテストより複雑なを構築します。
ここではどうなるかだサンプルをチュートリアル Chapter3-1-1に(Chpater3-1-5は、我々のプロジェクトの結果であり、また参照)以下の実験。
Swagger2依存性を追加します。
pom.xml
依存Swagger2を追加
<依存性>
<のgroupId> io.springfox </のgroupId>
<たartifactId> springfox-闊歩-UI </たartifactId>
<バージョン> 2.9.2 </バージョン>
</依存>
<依存性>
<のgroupId> io.springfox </ groupId>
<たartifactId> springfox-swagger2 </たartifactId>
<バージョン> 2.9.2 </バージョン>
</依存関係>
作成Swagger2の設定クラス
ではApplication.java
、同じレベルで作成Swagger2の設定クラスSwagger2
。
1 @Configuration EnableSwagger2 @ 2 3パブリッククラスSwagger2 { 4 @Bean 5公共ドケットcreateRestApi(){ 6リターン新しいドケット(DocumentationType.SWAGGER_2) 7 .apiInfo(apiInfo()) 8 .select() 9 .apis(RequestHandlerSelectors.basePackage ( "com.didispace.web")) 10 .paths(PathSelectors.any()) 11 .build(); 12} 13プライベートApiInfo apiInfo(){ 14リターン新しいApiInfoBuilder() 15 .TITLE( "春の起動中使用Swagger2构建のRESTfulなAPI") 16 .DESCRIPTION(「更多春ブーツ相关文章请关注ます。http://ブログ。 didispace.com/」) 17 .termsOfServiceUrl( "http://blog.didispace.com/") 18が.contact( "程序猿DD") 19 .version( "1.0") 20 .build()。 21} 22}
コードに示されているように、によって@Configuration
注釈、スプリングは、クラスコンフィギュレーションをロードできるようにします。それまで@EnableSwagger2
Swagger2コメントを有効にします。
スルーcreateRestApi
機能を作成Docket
Beanの、後にapiInfo()
API(文書の基本情報展覧会になりましページ)の基本的な情報を作成するために使用されます。select()
関数は戻りApiSelectorBuilder
、本実施形態が定義されるに応じて指定スキャンパスパッケージを使用して、表示する闊歩への曝露を制御するために使用されるインタフェースのインスタンスを、闊歩は、このパケットに定義されたすべてのコントローラのAPIをスキャンし、(であることに加えて、文書のコンテンツを生成@ApiIgnore
要求によって指定されました)。
ドキュメントのコンテンツの追加
上記の設定が完了した後、実際には、文書の内容を生成することができますが、この文書は、ユーザーフレンドリーではない、それ自体の要求である、と主な機能について説明し、その生産から名付けられ、我々は通常、コンテンツが豊富なドキュメントを所有する一部の命令を追加する必要があります。以下に示すように、我々はによって持っ@ApiOperation
を通して、APIに注釈を増加させる@ApiImplicitParams
、@ApiImplicitParam
注釈パラメータ増加を説明します。
@RestController。1 以下のマッピングを行うことにより、ここで2 @RequestMapping(値=「/ユーザ」)//は、ユーザー/に配置されて除去することができる 。3 UserControllerで{publicクラス 4静的地図<ロング、ユーザー>ユーザーCollections.synchronizedMap(= HashMapの新しい新しい<ロング、ユーザー>()); 5 @ApiOperation(値= "ユーザのリスト"、ノート= "") 6 @RequestMapping({値= ""}、= RequestMethod.GET方法) 7パブリックリスト<ユーザ。 > getUserList(){ 8リスト<ユーザ> = R&LT新しい新規のArrayList <ユーザー>(users.values());。 。9リターンR&LT; 10} 11 @ApiOperation(ユーザーに従って作成値= "ユーザの作成"、ノート=「ユーザーオブジェクト") " =真必要、のdataTypeユーザ"値="ユーザ詳細エンティティユーザ12は@ApiImplicitParamは(名前=である" " ="ユーザ) 13 @RequestMapping(値= ""、方法= RequestMethod.POST) パブリック文字列postUser 14(ユーザユーザー@RequestBody){ 26 @ApiImplicitParam(名=は」ID」、=真に必要な値= "用户のID"、DataTypeが "ロング")、 Users.put 15(user.getId()、ユーザ); 16リターン"成功"; 17} 18 @ApiOperation(値"ユーザのIDのURLを取得するように詳細" =、ノート= "ユーザーの詳細を取得")であり、 19 @ApiImplicitParam(名= "ID"、値= " ユーザID"、必須= trueに、DataTypeが"長い") 20が@RequestMappingさ(値= "/ {ID}"、メソッド= RequestMethod.GET) 21(のgetUserユーザー公開され長いID @PathVariable){ 22リターンusers.get(ID)であり、 23である} 24 @ApiOperation(値=「ユーザの詳細の更新」は、=「指定された更新対象ID URLを指摘し、そして上を通過するユーザ情報に基づいて更新ユーザの詳細") 25 @ApiImplicitParams({ ="ユーザー") 28}) 27 @ApiImplicitParam(=真必要名= "ユーザー"、値= "用户详细实体ユーザ"、DataTypeが"ユーザー") 29 @RequestMapping(値= "/ {ID}"、方法= RequestMethod.PUT) 30公衆ストリングputUser(@PathVariableロングID、@RequestBodyユーザーユーザ){ 31ユーザU = users.get(ID)。 32 u.setName(user.getName())。 33 u.setAge(user.getAge())。 34 users.put(ID、U)。 35リターン「成功」; 36} 37 @ApiOperation(値= "删除用户"、ノート= "根据のURL的IDを来指定删除对象") 38 @ApiImplicitParam(名= "ID"、値= "用户ID"、必須=真、DataTypeが"長い") 39 @RequestMapping(値=" / {ID}」、 40パブリック文字列は、deleteuser(@PathVariable長いID){ 41 users.remove(ID)。 42リターン「成功」; 43} 44}
:上記のコードの完了時に訪れ、春のブートプログラムを起動するために追加されたHTTP:// localhostを:8080 /威張っ-ui.htmlを
。あなたは以前のページを参照してくださいRESTfulなAPIを表示することができます。図に示すように、我々は、次に、例として/ユーザPOSTリクエストタイプに特異的なAPIリクエストを開くことができ、パラメータは、我々の構成の説明に注意ユーザ情報とコード情報に見出すことができます。
APIドキュメントおよびデバッグアクセス
ページ上の要求を考慮して、我々は、ユーザーの値入力ボックスを参照してください?インターフェイス機能の表示にはい、闊歩のほか、だけでなく、デバッグテスト機能を提供し、我々は上の画像の右側にあるモデルスキーマをクリックすることができます(黄色のエリア:それはユーザーのデータ構造を示す)、この時間は、バリューにユーザーオブジェクトが存在しますテンプレート、我々は唯一の下をクリックし、少し適切な変更を必要とする“Try it out!”
呼び出すための要求を完了するために、ボタンを!
POSTリクエストは、いくつかのGETリクエストで正しい前にこの時点で、あなたは確認することができます。
文書を書かれたこれらのインタフェースの作品と比較すると、我々は、設定内容が非常に小さく、合理化され増加し、オリジナルの侵略のためのコードは、範囲内に立っています。そのため、RESTfulなAPIを構築するAPIドキュメントを管理するために闊歩を追加しながら、それは良い選択です。
完全な結果の例としては、閲覧することができChapter3-1-5を。