swagger2 に基づくいくつかの基本操作
目次
1. Swagger の概要
フロントエンドとバックエンドは別々に開発されており、バックエンドはインターフェース記述文書を作成する必要があり、時間がかかります。Swagger は、サーバーインターフェースの規範文書を生成し、インターフェースをテストするためのツールです。
2.機能
- サーバーインターフェイスの標準ドキュメントの生成
- インターフェースをテストする
3. 統合
-
API サブプロジェクト (Swager2\Swagger UI) に依存関係を追加します。
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
-
API サブプロジェクトで Swagger 構成を作成する (Java 構成メソッド)
- 新しい構成パッケージ、SwaggerConfig クラス
@Configuration @EnableSwagger2 //启动Swagger2 public class SwaggerConfig { /*swagger 帮助我们生成帮助文档 * 1.配置生成的文档信息 * 2.配置生成的规则 * Docket,封装接口文档信息 * */ public Docket getDocket() { //DocumentationType.SWAGGER_2 :指定文档风格 /* * 如何获取一个接口、抽象类对象 * 1.new 接口,需要在构造器后的{}实现接口中的所有抽象方法 * 2.new 子类/实现类 * 3.工厂模式 * */ ApiInfoBuilder apiInfoBuilder = new ApiInfoBuilder(); //创建封面信息对象 apiInfoBuilder.title("《锋迷商城》接口说明") .description("此接口文档实现了.....") .version("v 2.0.1") .contact(new Contact("Mr.Suho", "www.cwaits.xyz", "[email protected]")); ApiInfo apiInfo = apiInfoBuilder.build(); Docket docket = new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo)//指定生成的文档封面信息:文档标题,版本。作者 .select() .apis(RequestHandlerSelectors.basePackage("com.sh.controller")) .paths(PathSelectors.regex("/user/")) .build(); return docket; } }
-
テスト
- SpringBoot アプリケーションを起動し、http://localhost:8080/swagger-ui.html にアクセスします。
4. Swagger アノテーションの説明
swagger は、各インターフェイスを詳細に説明できる一連の注釈を提供します
-
@api (クラス アノテーション)、このアノテーションをコントローラー クラスに追加してコントローラーを説明します
@Api(value = "实现用户登录,注册功能",tags = "用户管理")
-
@ApiImplicitiParams および @ApiImplicitiParam (メソッド アノテーション)。インターフェイス メソッドのパラメーターを記述します。
@ApiImplicitParams({ @ApiImplicitParam(dataType ="String",name = "username",value = "用户登录账号",required = true), @ApiImplicitParam(dataType ="String",name = "pwd",value = "用户登录密码",required = false), }) @RequestMapping(value = "/login",method = RequestMethod.GET) public ResultVo login(String name, String pwd){ return userService.checkLogin(name,pwd); }
-
@ApiOperation (メソッド アノテーション)、インターフェイス メソッドの役割を説明します
@ApiOperation("用户登录接口") @RequestMapping(value = "/login",method = RequestMethod.GET) public ResultVo login(String name, String pwd){ return userService.checkLogin(name,pwd); }
-
@ApiModel と @ApiModelProperty は、インターフェースのパラメータと戻り値がオブジェクト型の場合、エンティティクラスにアノテーションを追加します
@ApiModel(value = "ResultVO对象",description = "封装接口返回给前端的数据") public class ResultVo { //响应给前端的状态码 @ApiModelProperty(value = "响应状态码",dataType = "int") private Integer code; //响应给前端的提示信息 @ApiModelProperty("响应提示信息") private String msg; //响应给前端的数据 @ApiModelProperty("响应数据") private Object data; }
-
@ApiIgnore、インターフェイス メソッド アノテーション、このアノテーションで追加されたメソッドはインターフェイス ドキュメントに生成されません
@ApiIgnore @RequestMapping(value = "/login",method = RequestMethod.GET) public ResultVo login(String name, String pwd){ return userService.checkLogin(name,pwd); }
5.Swagger-ui プラグイン
-
プラグインの依存関係をインポートする
<!--swagger-ui 插件--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.6</version> </dependency>
-
ドキュメントへのアクセス:
http://ip:port/doc.html
- http://localhost:8080/doc.html