在开发过程中写完接口以后免不了要做接口测试,很多时候都是使用第三方请求程序做测试。在很多时候使用起来不方便,或者很多情况下是禁止互联网的。那么就出现了可集成springboot的接口测试框架Swagger
maven方式新建springboot项目
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.wjxt</groupId>
<artifactId>wjxt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>wjxt</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
主要引入是
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
配置Swagger参数
新建Swagger配置类
package com.wjxt.Swagger;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.v3.oas.annotations.Parameter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class swagger3 {
/**
* 配置基本信息
* @return
*/
@Bean
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("系统 API")
.description("系统 api")
.termsOfServiceUrl("#")
.contact(new Contact("测试工具","#","18379287@qq.com"))
.version("1.0")
.build();
}
/**
* 配置文档生成最佳实践
* @param apiInfo
* @return
*/
@Bean
public Docket createRestApi(ApiInfo apiInfo) {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo)
.groupName("用户接口")
.select()
.apis(RequestHandlerSelectors.basePackage("com.wjxt.controller"))
.paths(PathSelectors.ant("/user/**"))
.build()// 指定全局参数
;
}
@Bean
public Docket createRestApi1(ApiInfo apiInfo) {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo)
.groupName("系统接口")
.select()
.apis(RequestHandlerSelectors.basePackage("com.wjxt.controller"))
.paths(PathSelectors.ant("/systempc/**"))
.build();
}
}
主要用于配置说明
主要用于分组,当项目开发到后期接口多了以后区分很麻烦,所以可以把不同的接口做分组处理。
测试接口
@RequestMapping(value="/login",method = RequestMethod.POST)
@ResponseBody
@ApiOperation("登录接口")
public aqjyxt_user login(HttpServletRequest request,aqjyxt_user aqjyxt_user) {
return aqjyxt_user;
}
@RequestMapping(value="/login",method = RequestMethod.POST) //设置只显示post选项
@ApiOperation("登录接口")//设置swagger中接口显示的描述
aqjyxt_user对象类
package com.wjxt.entity;
public class aqjyxt_user {
private String id;
private String user;
private String password;
private String username;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user == null ? null : user.trim();
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}
}
启动服务测试接口
启动服务以后输入
http://127.0.0.1:8085/swagger-ui/index.html#/
swagger自带的ui实在太丑了,一开始导入的插件其实就是swagger-bootstrap-ui。可以直接访问
http://127.0.0.1:8085/doc.html
很多时候我们的token是存放在头文件中的,怎么添加头文件参数呢?
可以在文档管理--全局参数设置中添加头文件
那么swagger的配置到这里就结束了。