SpringBoot集成swagger生成在线接口文档
- 集成maven依赖
<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>
- 创建配置bean
- 配置类的相关配置
@Configuration
@EnableSwagger2
@ConditionalOnExpression("${swagger.enable}") //开启访问接口文档的权限
public class Swagger2 {
@Bean
public Docket userRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("用户模块") //模块名称
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.ulabor.laboratory.controller.usermanage")) //扫描的控制器路径
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("xxx项目开发接口文档") //接口文档标题
.description("此文档仅供开发技术组领导、开发人员使用") //描述
.termsOfServiceUrl("http://www.xxx.com/") //相关的网址
.contact(new Contact("后端开发","http://www.xxx.com/","8xxxxx67@qq.com")) //作者 邮箱等
.version("1.0") //版本号
.build();
}
}
- controller层先关的注解使用
@Controller
@RequestMapping("/app")
@Api(tags = "用户登陆相关Api")
public class UserController {
。。。。省略
}
在controller层加上@Api注解,tags是对控制器命名,description可以对该控制器进行描述
/**
* 用户手机号密码登陆接口
*
* @return 结果json
* @author
*/
@ApiOperation(value = "用户手机号密码登陆接口",response = User.class)
@ApiImplicitParams({
@ApiImplicitParam(name = "strRegionNumber",paramType = "query",value = "区号",required = true,dataType = "String"),
@ApiImplicitParam(name = "strUserPhone",paramType = "query",value = "手机号码",required = true,dataType = "String"),
@ApiImplicitParam(name = "strPassword",paramType = "query",value = "密码",required = true,dataType = "String")
})
@RequestMapping(path = "/phone/password/login", method = RequestMethod.POST,produces = "application/json")
@ResponseBody
public String phonePasswordLogin(HttpServletRequest request) {
。。。。此处省略n行代码
}
Swagger使用的注解及其说明:
@Api:用在类上,说明该类的作用。
@ApiOperation:注解来给API增加方法说明。
@ApiImplicitParams : 用在方法上包含一组参数说明。
@ApiImplicitParam:用来注解来给方法入参增加说明。
参数说明:
paramType:指定参数放在哪个地方
header:请求参数放置于Request Header,使用@RequestHeader获取
query:请求参数放置于请求地址,使用@RequestParam获取
path:(用于restful接口)-->请求参数的获取:@PathVariable
body:(不常用)请求体
form(不常用)表单
name:参数名
dataType:参数类型
required:参数是否必须传
true | false
value:说明参数的意思
defaultValue:参数的默认值
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类
@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性
- 启动Spring Boot主程序,访问:http://localhost:8080/swagger-ui.html
出现页面如下
然后可以对接口进行测试。修改后重新启动程序,就可以进行在再次测试,方便前后端实时调试接口。