SpringBoot使用Swagger2构建API文档

柔情痞子 提交于 2019-12-03 14:49:47

  后端开发中经常需要对移动客户端提供RESTful API接口,在后期版本快速迭代的过程中,修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致写出的代码与接口文档不一致现象。

  Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

  

 

 1.在pom.xml中加入swagger2依赖

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
</dependency>
<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
</dependency>

2.创建swagger2配置类

@Configuration
@EnableSwagger2
public class SwaggerConfig {
     @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.offcn.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }

        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("Spring Boot中使用Swagger2构建RESTful APIs")
                    .description("描述描述")
                    .termsOfServiceUrl("http://www.baidu.com/")
                    .contact("Sunny")
                    .version("1.0")
                    .build();
        }
}

3.Controller增加文档注释

通过@ApiImplicitParams@ApiImplicitParam注解来给参数增加说明

 1 @RestController
 2 @EnableConfigurationProperties({User.class})
 3 @RequestMapping("/user")
 4 public class UserController {
 5 
 6     @Autowired
 7     User user;
 8 
 9     private List<User> listUser= Collections.synchronizedList(new ArrayList<User>());
10 
11     //查询所有
12     @GetMapping("/")
13     @ApiOperation(value="查询All用户信息", notes="All用户信息")
14     public List<User> getAllUser(){
15         return listUser;
16     }
17     //获取指定id的user
18     @GetMapping("/{id}")
19     @ApiOperation(value="查询指定id用户信息", notes="根据id查用户信息")
20     @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
21     public User getUser(@PathVariable("id") Long id){
22         for(User u:listUser){
23             if(u.getId()==id){
24                 return user;
25             }
26         }
27         return null;
28     }
29     //插入
30     @PostMapping("/")
31     @ApiOperation(value="插入用户", notes="插入用户信息")
32     @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
33     public String insert(User user){
34         listUser.add(user);
35         return "success";
36     }
37     //根据id修改
38     @PutMapping("/{id}")
39     @ApiOperation(value="更新指定id用户信息", notes="根据id更新用户信息")
40     @ApiImplicitParams({
41             @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
42             @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
43     })
44     public String update(@PathVariable("id") Long id,User user){
45         for (User user2 : listUser) {
46             if(user2.getId()==id) {
47                 user2.setName(user.getName());
48                 user2.setAge(user.getAge());
49             }
50         }
51         return "success";
52     }
53     //根据id删除
54     @DeleteMapping("/{id}")
55     @ApiOperation(value="删除指定id用户信息", notes="根据id删除用户信息")
56     @ApiImplicitParam(name = "id", value = "用户id", required = true, dataType = "Long")
57     public String delete(@PathVariable("id") Long id){
58         listUser.remove(getUser(id));
59         return "success";
60     }
61 
62 }

 

4.启动tomcat:

访问地址:http://localhost:8080/swagger-ui.html

即可看到上面的API

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!