1.概述
Swagger是一款測試文檔Api接口,具體用法見SpringBoot整合Swagger。而knife4j是對Swagger進一步封裝,其優化了api文檔的界面。官網https://doc.xiaominfo.com/knife4j/documentation/。
2.實戰演練
2.1環境准備
新建一個SpringBoot的項目,導入需要的依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
2.2接入knife4j
1)導入依賴
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
2)創建配置類
package com.example.demo.config; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 @EnableKnife4j public class Knife4jConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .useDefaultResponseMessages(false) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .description("微微一笑接口測試文檔") .contact(new Contact("哈哈哈", "https://github.com.lenve", "1916008067@qq.com")) .version("v1.1.0") .title("API測試文檔") .build(); } }
3)創建User實體類
package com.example.demo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "用戶實體") public class User { @ApiModelProperty(value = "id") private Integer id; @ApiModelProperty(value = "用戶名") private String username; @ApiModelProperty(value = "性別,0男,1女") private Integer sex; }
4)創建開發接口
package com.example.demo.controller; import com.example.demo.User; import io.swagger.annotations.*; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; @RestController @Api(tags = "用戶接口")//描述UserController的信息 public class UserController { @ApiOperation(value = "查詢用戶",notes = "根據id查詢用戶") @ApiImplicitParam(paramType = "path",name="id",value = "用戶id",required = true) @GetMapping("/user/query/{id}") public String getUserById(@PathVariable Integer id) { return "/user/"+id; } @ApiResponses({ @ApiResponse(code=200,message="刪除成功"), @ApiResponse(code=500,message="刪除失敗")}) @ApiOperation(value = "刪除用戶",notes = "根據id刪除用戶") @DeleteMapping("/user/delete/{id}") public Integer deleteUserById(@PathVariable Integer id) { return id; } @ApiOperation(value = "添加用戶",notes = "添加一個用戶,傳入用戶名和性別") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query",name="username",value = "用戶名",required = true,defaultValue = "張三"), @ApiImplicitParam(paramType = "query",name="sex",value = "性別",required = true,defaultValue = "女") }) @PostMapping("/user") public String addUser(@RequestParam String username,@RequestParam String sex){ return username+","+sex; } @ApiOperation(value="修改用戶",notes = "根據傳入的用戶信息修改用戶") @PutMapping("/user") public String updateUser(@RequestBody User user){ return user.toString(); } @GetMapping("/ignore") @ApiIgnore public void ignoreMethod(){} }
4)測試。啟動項目,在瀏覽器輸入http://localhost:8080/doc.html就可以看到接口的信息,展開接口,就能看到所有的接口詳細信息。
展開后可以對各個請求進行測試。選擇接口后點擊調試,輸入相關的參數點擊發送按鈕即可。