由于 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