1.什么是Swagger
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步。Swagger 让部署管理和使用功能强大的 API 从未如此简单。
2.springboot整合Swagger
工具:IDEA开发版
插件:Spring Initializr
(1)IDEA->file->Projet->Spring Initializr
(1)添加Web环境
(3)生成文件目录
(4)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.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.linxin</groupId>
<artifactId>swagger</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>swagger</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--Web支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springBoot测试支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Swagger集成环境-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<!-- SwaggerUI页面-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
(5)测试Web环境是否可用
新建controller包->HelloController(页面控制层)
package com.linxin.swagger.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author zhangxinlin
* @date 2021/5/8-14:04
*/
@RestController // 组合注解@ResponseBody,@Controller
public class HelloController {
@GetMapping("hello")
public String hello(){
return "hello";
}
}
(6)浏览器访问(地址:http://localhost:8080/hello)
(7)加入Swagger配置
package com.jucuo.iot.config;
import org.springframework.beans.factory.annotation.Value;
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 zhangxinlin
* swagger配置类
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createDocket(){
return new Docket(DocumentationType.SPRING_WEB)
.apiInfo(apiInfo())
.enable(true)
.groupName("张新林")
.select()
// 配置要扫描的接口的方式
// basePackage配置要扫描的包
// any():扫描全部
// none():不扫描
// withClassAnnotation:扫描类上注解,参数是一个注解的反射对象
// withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.jucuo.iot.controller"))
// 过滤什么路径
.paths(PathSelectors.any())
.build();
// swagger开关
}
/**
* 配置Swagger作者信息
* @return
*/
private ApiInfo apiInfo(){
return new ApiInfoBuilder().title("举措数据系统")
.description("学习")
.version("1.0")
//作者信息
.contact(new Contact("张新林","https://blog.csdn.net/weixin_45460315","2212257212@qq.com"))
.build();
}
}
(8)运行项目访问路径(http://localhost:8080/swagger-ui.html#!/%E6%B5%8B%E8%AF%95Swagger/helloUsingGET)