1.引入jar包
<!-- springfox-swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
2.编写配置类
package com.qyc.Microservice.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.AbstractEnvironment;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 访问地址:
* /swagger-ui/index.html
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Autowired
private AbstractEnvironment env;
@Bean
public Docket createRestApi() {
//是否开启swagger,正式环境一般是需要关闭的(避免不必要的漏洞暴露!),可根据springboot的多环境配置进行设置
String swaggerflag = env.getProperty("swagger.enable");
if("true".equals(swaggerflag)){
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.qyc.Microservice.controller"))
.paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder()
.title("项目接口接口说明")
.description("详细信息......")
.version("1.0")
.contact(new Contact("JoePotter","https://www.cnblogs.com/JoePotter/","252177507@qq.com"))
.license("The Apache License")
.licenseUrl("https://www.cnblogs.com/JoePotter/")
.build());
}else {
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.qyc.Microservice.controller"))
.paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder()
.title("项目接口接口说明")
.description("详细信息......")
.version("1.0")
.contact(new Contact("JoePotter","https://www.cnblogs.com/JoePotter/","252177507@qq.com"))
.license("The Apache License")
.licenseUrl("https://www.cnblogs.com/JoePotter/")
.build()).enable(false);
}
}
}
3.对接口和实体类添加注释,生成doc。常用的标记如下
@Api()用于类;
标识这个类是swagger的资源
tags–表示分组说明标签
@ApiOperation()用于方法;
表示一个http请求的操作
value用于方法描述
notes用于提示内容
@ApiModel()用于实体类
表示对类进行说明,用于参数用实体类接收
value–表示对象名
description–描述
@ApiModelProperty()用于实体类字段
表示对model属性的说明或者数据操作更改
value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
@ApiImplicitParam() 用于 controller 方法
表示单独的请求参数
name–参数ming
value–参数说明
dataType–数据类型
paramType–参数类型
example–举例说明
@ApiImplicitParams() 用于 controller 方法,包含多个 @ApiImplicitParam
@ApiIgnore()用于类或者方法上,可以不被swagger显示在页面上
说明:简单的标记只需要@Api(tags="") 和 @ApiOperation(value="",notes="")
@RestController
@RequestMapping("/user")
@Api(tags = "用户登录")
public class LoginController extends BaseController {
@Autowired
private UserService userService;
@PostMapping("/save")
@ApiOperation(value = "新建用户!",notes = "提示信息。")
public void save(@Valid User user) {
userService.saveMapper( user);
}
原文:https://www.cnblogs.com/JoePotter/p/14672041.html