包引入
<!-- swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
在与spring boot入口类同级目录新建Swagger2类,
配置类
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xx.xx.web"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot整合Swagger2")
.description("Spring Boot整合Swagger2")
.termsOfServiceUrl("http://localhost:9001/swagger-ui.html")
.contact("your contact")
.version("1.0")
.build();
}
}
过@Configuration注解,让Spring来加载该类配置。再通过@EnableSwagger2注解来启用Swagger2,至此,配置完成。
项目使用
controller代码
@Api(value = "测试api",description = "用户接口测试")
@RestController
@RequestMapping("users")
public class AuthController {
@ApiOperation(value = "获取用户信息",notes = "根据id获取用户信息")
@ApiImplicitParam(name = "id",value = "用户id",dataType = "Long",required = true,paramType = "path")
@RequestMapping(value = "{id}",method = RequestMethod.GET)
public String get(@PathVariable(name = "id") Long id){
return "test"+id;
}
@ApiOperation(value = "新增用户",notes = "新增用户")
@ApiImplicitParams({@ApiImplicitParam(name = "user",value = "用户信息",dataType = "User",required = true,paramType = "body")})
@RequestMapping(value = "",method = RequestMethod.PUT)
public String add(@RequestBody User user){
return "test"+user.getUsername();
}
@ApiOperation(value = "更新用户信息",notes = "更新用户信息")
@ApiImplicitParams({@ApiImplicitParam(name = "user",value = "用户信息",dataType = "User",required = true,paramType = "body")})
@RequestMapping(value = "",method = RequestMethod.POST)
public String update(@RequestBody User user){
return "test"+user.getUsername();
}
@ApiOperation(value = "删除用户",notes = "根据id删除用户")
@ApiImplicitParam(name = "id",value = "用户id",dataType = "Long",required = true,paramType = "path")
@RequestMapping(value = "{id}",method = RequestMethod.DELETE)
public String delete(@PathVariable(name = "id") Long id){
return "test"+id;
}
}
User类
@Data
@ApiModel(value = "User",description = "用户信息")
public class User {
@ApiModelProperty(value = "用户id",required = true)
private Long id;
@ApiModelProperty(value = "用户名称",required = true)
private String username;
@ApiModelProperty(value = "备注")
private String memo;
}
@Data是lombok的注解,用于生成get set方法,可自行生成,或引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
启动项目访问http://localhost:9001/swagger-ui.html 即可,9001是我配置的web端口。
点开第一个,输入参数值,点击try it out
即可测试接口。
基本使用方式上图已有案例,此处需要注意到的
1、 ApiImplicitParam里面paramType 这个参数,默认为空
path 以地址的形式提交数据
query 直接跟参数完成自动映射赋值
body 以流的形式提交 仅支持POST
header 参数在request headers 里边提交
form 以form表单的形式提交 仅支持POST