由於 Spring Boot 能夠快速開發、便捷部署等特性, 通常在使用 Spring Boot構建 Restful 接口應用時考慮到多終端的原因,這些終端會共用很多底層業務邏輯,因此我們會抽象出這樣一層來同時服務於多個移動端或者 Web 前端。對於不同的終端公用一套接口 Api 時對於聯調測試時就需要知道后端提供的接口Api列表文檔,對於服務端開發人員來說就需要編寫接口文檔,描述接口調用地址參數 結果等,這里借助第三方構建工具Swagger2來實現Api文檔生成功能。
- 添加依賴
<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>
- 配置文件
1 @Configuration 2 @EnableSwagger2 3 public class Swagger2Config { 4 @Bean 5 public Docket customDocket() { 6 return new Docket(DocumentationType.SWAGGER_2) 7 .apiInfo(apiInfo()) 8 .select() 9 .apis(RequestHandlerSelectors.any()) 10 .paths(PathSelectors.any()) 11 .build(); 12 } 13 14 private ApiInfo apiInfo() { 15 Contact contact = new Contact("團隊名", "www.my.com", "my@my.com"); 16 return new ApiInfoBuilder() 17 .title("文檔標題") 18 .description("文檔描述") 19 .contact(contact) // 聯系方式 20 .version("1.1.0") // 版本 21 .build(); 22 } 23 }
- 控制層
1 @Api(tags = "樣例接口") 2 @RestController 3 public class DemoController { 4 5 6 @ApiOperation(value = "插入demo") 7 @PutMapping("putDemo") 8 public Map<String,Object> putDemo() { 9 System.out.println("執行插入數據"); 10 Map<String,Object> map = new HashMap<>(); 11 map.put("code",200); 12 map.put("msg","success"); 13 return map; 14 } 15 16 @ApiOperation(value = "查詢demo") 17 @ApiImplicitParam(dataType = "integer",defaultValue = "",required = true) 18 @GetMapping("/getDemo/{userId}") 19 public List<String> getDemo(@PathVariable Integer userId) { 20 List<String> list = new ArrayList<>(); 21 list.add("OK"); 22 return list; 23 } 24 }
訪問瀏覽器,輸入http://localhost:8088/swagger-ui.html
常用注解解釋說明:
@Api:修飾整個類,描述Controller的作用
@ApiOperation:描述一個類的一個方法,或者說一個接口
@ApiImplicitParams:多個請求參數
@ApiImplicitParam:一個請求參數
@ApiOperation:描述一個類的一個方法,或者說一個接口
@ApiImplicitParams:多個請求參數
@ApiImplicitParam:一個請求參數
@ApiResponses:HTTP響應整體描述
@ApiResponse:HTTP響應其中1個描述
@ApiModel:用對象來接收參數
@ApiModelProperty:用對象接收參數時,描述對象的一個字段
@ApiIgnore:使用該注解忽略這個API
@ApiResponse:HTTP響應其中1個描述
@ApiModel:用對象來接收參數
@ApiModelProperty:用對象接收參數時,描述對象的一個字段
@ApiIgnore:使用該注解忽略這個API