SpringBoot初探之Swagger配置

JAVA学习网 2018-03-15 19:56:03

Swagger是一个用于描述和测试restful接口的工具,只要在定义restful接口时增加一些类和方法的描述注解,通过很简单的配置就可以得到一个展示接口定义的页面,也可以在页面上设置参数提交测试接口(替代postman的部分功能)。

 

接口修改后不需要单独修改描述文档,swagger自动生成接口文档。下面讲一下如果搭建一个最简单swagger测试Demo。

一、创建一个SpringBoot的maven项目

项目创建方式可以参考我这篇博客《Spring Boot初探之restful服务发布》,项目创建后的目录如下:

 

 

二、创建好后在pom.xml文件中增加swagger依赖的包

 1       <dependency>
 2 
 3           <groupId>io.springfox</groupId>
 4 
 5           <artifactId>springfox-swagger2</artifactId>
 6 
 7           <version>2.8.0</version>
 8 
 9         </dependency>
10 
11       <dependency>
12 
13           <groupId>io.springfox</groupId>
14 
15           <artifactId>springfox-swagger-ui</artifactId>
16 
17           <version>2.8.0</version>
18 
19       </dependency>

 

直接使用appache的仓库:

 

1         <repository>  
2             <id>springfox-swagger</id>  
3             <url>https://mvnrepository.com/artifact/io.springfox/springfox-swagger2</url>  
4         </repository>
5         <repository>  
6             <id>springfox-swagger-ui</id>  
7             <url>https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui</url>  
8         </repository>

三、添加swagger的配置加载类(Swagger2Config.java)

 1 package com.elon.springbootdemo.config;
 2 
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.Configuration;
 5 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 6 
 7 import springfox.documentation.builders.ApiInfoBuilder;
 8 import springfox.documentation.builders.PathSelectors;
 9 import springfox.documentation.builders.RequestHandlerSelectors;
10 import springfox.documentation.service.ApiInfo;
11 import springfox.documentation.spi.DocumentationType;
12 import springfox.documentation.spring.web.plugins.Docket;
13 import springfox.documentation.swagger2.annotations.EnableSwagger2;
14 
15 @Configuration
16 @EnableSwagger2
17 public class Swagger2Config extends WebMvcConfigurerAdapter {
18     @Bean
19     public Docket api() {
20         return new Docket(DocumentationType.SWAGGER_2)
21                 .select()
22                 .apis(RequestHandlerSelectors.basePackage("com.elon.springbootdemo.ws"))
23                 .paths(PathSelectors.any())
24                 .build()
25                 .apiInfo(getApiInfo());
26     }
27     
28     private ApiInfo getApiInfo()  
29     {  
30         ApiInfo apiInfo =  new ApiInfoBuilder().title("用户管理模块")
31                 .description("定义用户数据的增加、删除、修改接口")
32                 .termsOfServiceUrl("http://www.cnblogs.com/elon")
33                 .version("1.0")
34                 .build();
35         return apiInfo;  
36     }  
37 }

四、添加用于测试的restful接口(WSUserSwagger.java)

 1 package com.elon.springbootdemo.ws;
 2 
 3 import org.springframework.web.bind.annotation.PathVariable;
 4 import org.springframework.web.bind.annotation.RequestBody;
 5 import org.springframework.web.bind.annotation.RequestHeader;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.RequestMethod;
 8 import org.springframework.web.bind.annotation.RequestParam;
 9 import org.springframework.web.bind.annotation.RestController;
10 
11 import io.swagger.annotations.Api;
12 import io.swagger.annotations.ApiOperation;
13 
14 @RestController
15 @RequestMapping(value="swagger-demo")
16 @Api(value="WSUserSwagger", description="用户信息管理")
17 public class WSUserSwagger {
18     
19     @ApiOperation(value="添加用户", notes="添加用户")
20     @RequestMapping(value="/v1/user", method=RequestMethod.POST)
21     public String addUser(@RequestBody String userInfo) {
22         return "Add user:" + userInfo;
23     }
24     
25     @ApiOperation(value = "根据名称查询用户", notes = "根据名称查询用户")
26     @RequestMapping(value = "/v1/user", method = RequestMethod.GET)
27     public String queryUserByName(@RequestParam("name") String name, @RequestHeader("age") int age) {
28         return name + age;
29     }
30     
31     @ApiOperation(value="删除用户", notes="删除用户")
32     @RequestMapping(value="/v1/user/{name}", method=RequestMethod.DELETE)
33     public String deleteUser(@PathVariable("name") String name) {
34         return "delete " + name;
35     }
36 } 

五、启动后测试

在浏览器中输入 http://localhost:8080/swagger-ui.html。打开页面可以看到定义的接口:

 

 

测试GET方法:点”Try it out”后输入参数, 点击”execute”执行可以看到接口执行后的返回结果。

 

 

 

                                                   

阅读(800) 评论(0)