SpringBoot配置测试接口文档(swagger)
源码地址:https://gitee.com/benming-walnut/swagger-ui.git
1.测试文档展示
2.项目目录结构
3.相关依赖
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.8.RELEASE</version>
</parent>
<properties>
<knife4j.version>1.9.6</knife4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--swagger测试接口文档-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
</dependency>
</dependencies>
4.启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerApplication.class, args);
}
}
5.配置文件
import com.github.xiaoymin.knife4j.spring.annotations.EnableSwaggerBootstrapUi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
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;
/**
* @author 黔程似景
* @description app相关接口
**/
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUi
public class SwaggerConfig {
private final static String APP_PAGE = "com.qq.controller.app";
private final static String SCHEDULE_PAGE = "com.qq.controller.schedule";
@Bean
public Docket getAppRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInfo("黔程似景---用户接口API文档")).groupName("APP")
.select()
.apis(RequestHandlerSelectors.basePackage(APP_PAGE))
.paths(PathSelectors.any())
.build();
}
@Bean
public Docket getScheduleRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(buildApiInfo("黔程似景---后端接口API文档")).groupName("SCHEDULE")
.select()
.apis(RequestHandlerSelectors.basePackage(SCHEDULE_PAGE))
.paths(PathSelectors.any())
.build();
}
private ApiInfo buildApiInfo(String title) {
Contact contact = new Contact("黔程似景", "http://localhost:8080", "");
return new ApiInfoBuilder()
.title(title)
.description("平台管理服务api")
.contact(contact)
.build();
}
}
6.Controller
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 黔程似景
* @description app相关接口
**/
@Api(tags = "app相关接口")
@RestController
public class AppController {
@ApiOperation(value = "你好呀!")
@GetMapping("/hello")
public String getHello(String name) {
return "hello " + name;
}
@ApiOperation(value = "post请求")
@PostMapping("/postJson")
public User postJson(User user) {
return user;
}
@ApiOperation(value = "post带json请求")
@PostMapping("/post")
public User post(@RequestBody User user) {
return user;
}
}
class User {
String id;
String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String id, String name) {
this.id = id;
this.name = name;
}
public User() {
}
}
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 黔程似景
* @description app相关配置接口
**/
@RestController
@Api(tags = "app相关配置接口")
public class ConfigController {
@ApiOperation(value = "你好呀!")
@GetMapping("/getConfig")
public String getHello(String name) {
return "hello" + name;
}
@ApiOperation(value = "获取用户信息")
@PostMapping("/userMessage")
public String getUserMessage(String name) {
return name;
}
}
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 黔程似景
* @description 定时器测试接口
**/
@RestController
@Api(tags = "定时器相关测试接口")
public class ScheduleController {
@ApiOperation(value = "定时器xxx接口")
@GetMapping("/getScheduleOne")
public String getScheduleOne() {
return "执行成功!";
}
@ApiOperation(value = "定时器2xxx接口")
@GetMapping("/getSchedule")
public String getSchedule() {
return "定时器执行成功!";
}
}
7.执行启动类
访问地址:http://localhost:8080/doc.html