1.认识Swagger
(1)Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
(2)作用:
① 接口的文档在线自动生成。
② 功能测试。
2.swagger的使用
2.1 方式1
创建swagger一般都是为了所有模块都能使用,可以单独创建一个模块,在启动类上添加注解
@ComponentScan(basePackages = {“//可以扫描的包”})
(1)导入swagger需要的坐标
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<scope>provided </scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<scope>provided </scope>
</dependency>
②创建配置类。
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName(“webApi”)
.apiInfo(webApiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex(“/admin/.“)))
.paths(Predicates.not(PathSelectors.regex(”/error.”)))
.build();
}
/**
* 创建该API的基本信息(这些基本信息会展现在文档页面中)
* 访问地址:http://项目实际地址/swagger-ui.html
* @return
*/
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title(“网站-课程中心API文档”)
.description(“本文档描述了课程中心微服务接口定义”)
.version(“1.0”)
.contact(new Contact(“Helen”, “http://www.baidu.com”, “123@qq.com”))
.build();
}
}
③输入http://ip地址:端口号/swagger-ui.html即可使用
2.2 方式二(使用knife4j)
knife4j是为java MVC框架集成Swagger生成Api文档的增强解决方案
(1)导入knife4j的maven坐标
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
(2)导入knife4j相关配置类
(3)设置静态资源,否则接口文档页面无法访问
@Slf4j
@Configuration
@EnableSwagger2
@EnableKnife4j
public class WebMvcConfig extends WebMvcConfigurationSupport {
// 设置静态资源映射
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始进行静态资源映射...");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
@Bean
public Docket createRestApi() {
// 文档类型
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.itheima.reggie.controller"))//需要扫描的Controller包路径
.paths(PathSelectors.any())
.build(); }
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("瑞吉外卖")
.version("1.0")
.description("瑞吉外卖接口文档")
.build();
} }
(4)在LoginCheckFilter中设置不需要处理的请求路径
//定义不需要处理的请求路径
String[] urls = new String[]{
"/doc.html",
"/webjars/**",
"/swagger-resources",
"/v2/api-docs"
};
(5)输入http://ip地址:端口号/doc.html即可访问
3.Swagger的常用注解
(1)@Api:用在类上,例如Controller,表示对类的说明
(2)@ApiModel:用在类上,通常是实体类,表示一个返回响应数据的信息
(3)@ApiModelProperty:用在属性上,描述响应类的属性
(4)@ApiOperation:用在请求方法上,说明方法的用途、作用
(5)@ApiImplicitParams:用在请求的方法上,表示一组参数的说明
(6)@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
(7)@ApiParam:可以作用在接口方法上面,以及接口方法中的参数位置的注解,其主要是用来给接口中的参数
定义相关参数说明,主要是为了帮助相关人员理解接口中每个参数的含义。