Swagger:API 框架
RestFul API 文档在线自动生成工具,API 文档与 API 定义同步更新
创建 Spring Boot 项目,依赖勾选 Spring Web
pom.xml 导入相关依赖:
springfox-swagger2、springfox-swagger-ui
XML
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
controller 包下新建 HelloController.java,先让项目跑起来
java
package com.demo.swagger.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello";
}
}
http://localhost:8080/hello 启动成功即可,项目搭建成功
配置 Swagger:
(先把 Spring Boot 的版本降低到 2.5.5,
之前尝试过添加依赖 springfox-boot-starter、springdoc-openapi-starter-webmvc-ui,
配置类换注解 @EnableOpenApi、@EnableWebMvc,
Swagger 依赖到最新版本 3.0.0,一旦写了配置类,通通无效!根本无法启动,一个劲报错)
config 包下 SwaggerConfig.java 开启 Swagger2,@EnableSwagger2
java
package com.demo.swagger.config;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
}
启动,进入 http://localhost:8080/swagger-ui.html
Swagger 给我们提供了一个前端页面
(新版地址换成了 http://localhost:8080/swagger-ui/index.html)
SwaggerConfig.java 配置类:(建议分析源码,点进 Docket 和 ApiInfo 查看)
配置 Swagger 的 Docket 的 bean 实例
配置 Swagger 信息 apiInfo
java
package com.demo.swagger.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;
import java.util.ArrayList;
import static springfox.documentation.service.ApiInfo.DEFAULT_CONTACT;
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
//配置Swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}
//配置Swagger信息apiInfo
private ApiInfo apiInfo(){
//作者信息
//Contact contact = new Contact("name","url","email");
return new ApiInfo("Api Documentation",
"Api Documentation",
"1.0",
"urn:tos",
DEFAULT_CONTACT, //contact
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList()
); //从ApiInfo源码获取,可以任意修改,展示的前端页面就会显示修改后的页面
}
}