最も人気のあるAPIフレームワークの理解--swagger
闊歩プロフィール
闊歩は、複数のプログラミング言語のためのサポートであるAPIフレームワーク。それは、直接実行することができ、オンラインAPIインタフェースをテストします。そこRESTfulなAPI-ライン自動ドキュメント生成ツール、およびAPIドキュメントやAPIの定義に到達することができ、同時に更新を。
広いフロントとリアの別々の開発に、多くの人々は、フロントハンドルの同期の問題を行うことができない、処理効率を向上させるために、スタッフの終了前と後の職場での衝突を避けるために、我々は「即時相談、ターゲット同期」する必要があります。この問題については、第1の溶液を使用することです:バックエンドのインターフェースを提供し、最新のAPI、単語計画書上のスキーマとリアルタイムの更新を指定し、フロントエンドインターフェースは郵便配達でテストバックエンドにする三つの方法。しかし、これらの方法はすぐに結果を達成することはできませんので、タイムリーに闊歩する必要があります。
世界で最も人気のあるAPIフレームワーク(プロジェクトで使用する場合闊歩、あなたはspringfoxが必要swagger2-UIと闊歩)。これは、次の2つのプロジェクトでの輸入依存度が必要です。
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
SpringBootとの統合闊歩
新しいSpringBoot のWebプロジェクト
インポートswagger2と闊歩-UI依存性
こんにちは、テスト用のプロジェクトを書き込みます
闊歩の設定、コンフィグを書きます
@Configuration @EnableSwagger2 //开启Swagger2 public class SwaggerConfig { }
テストを実行します。http:// localhost:8080 /威張っ-ui.html
構成情報闊歩
整理のBeanインスタンスを闊歩:
@Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2); }
コンフィギュレーション情報の闊歩:
//配置Swagger信息=apiInfo private ApiInfo apiInfo(){ //作者信息 Contact contact = new Contact("啊侠", "https://blog.csdn.net/weixin_44821160", "[email protected]"); return new ApiInfo( "啊侠的SwaggerAPI测试文档", "不要因为任何事情忘记自己最初的动力", "v1.0", "https://blog.csdn.net/weixin_44821160", contact, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList() ); }
闊歩スキャンインターフェイス設定
Docket.select()
//配置了Swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors,配置要扫描接口的方式
//basePackage:指定要扫描的包
//any():扫描全部
//none():不扫描
//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.david.swagger.controller"))
//paths()。过滤什么路径
.paths(PathSelectors.ant("/david/**"))
.build();
}
闊歩を開始するかどうかを設定します
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(false)//enable是否启动Swagger,如果为False,则Swagger不能再浏览器中访问
.select()
.apis(RequestHandlerSelectors.basePackage("com.david.swagger.controller"))
.build();
}
あなたが唯一の本番環境での私の闊歩を使用したい場合は、リリース時には使用しないでください必要があります。
- 本番環境を分析するフラグ= falseのではありません
- (フラグ)注射可能
//配置了Swagger的Docket的bean实例
@Bean
public Docket docket(Environment environment){
//设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev","test");
//通过environment.acceptsProfiles判断是否处在自己设定的环境当中
boolean flag = environment.acceptsProfiles(profiles);
System.out.println(flag);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(flag)
.select()
.apis(RequestHandlerSelectors.basePackage("com.david.swagger.controller"))
.build();
}
文書のAPI設定パケット
.groupName(「デビッド」)
複数のグループ、インスタンスドケット複数の
@Bean public Docket docket1(){ return new Docket(DocumentationType.SWAGGER_2).groupName("豪侠"); } @Bean public Docket docket2(){ return new Docket(DocumentationType.SWAGGER_2).groupName("真真"); } @Bean public Docket docket3(){ return new Docket(DocumentationType.SWAGGER_2).groupName("超强"); }
エンティティクラスを設定します
package com.david.swagger.pojo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; //@Api(注释) @ApiModel("用户实体类") public class User { @ApiModelProperty("用户名") public String username; @ApiModelProperty("密码") public String password; }
ライトコントローラ
package com.david.swagger.controller; import com.david.swagger.pojo.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping(value = "/hello") public String hello(){ return "hello"; } //只要我们的接口中,返回值中存在实体类,他就会被扫描到Swagger中 @PostMapping(value = "/user") public User user(){ return new User(); } //Operation接口,不是放在类上的,是方法 @ApiOperation("Hello控制类") @GetMapping(value = "/hello2") public String hello2(@ApiParam("用户名") String username){ return "hello"+username; } @ApiOperation("Post测试类") @PostMapping(value = "/posttest") public User posttest(@ApiParam("用户名") User user){ int i = 5/0;//;模拟代码错误 return user; } }
闊歩の役割をまとめます
闊歩することにより、より理解することは困難であるか、またはインターフェイスのプロパティのいくつかを与えるのメモ情報を追加することができます。ドキュメントには、リアルタイムの更新、APIを理解することも簡単にオンラインテストを実現することができます。闊歩は優れたツールですが、一方で実行するためのメモリを節約近い闊歩公式リリース前に、セキュリティ上の理由から、ため。