您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# SpringBoot中Swagger和Knife4j的使用指南
## 一、API文档工具概述
在现代Web开发中,良好的API文档是前后端协作的重要基础。Swagger作为一套开源的API文档工具,通过注解的方式自动生成RESTful风格的接口文档。而Knife4j则是Swagger的增强解决方案,在UI界面和功能上都进行了优化。
### 1.1 Swagger核心组件
- **Swagger Core**:处理注解的核心库
- **Swagger UI**:可视化文档界面
- **Swagger Editor**:API设计编辑器
- **Swagger Codegen**:代码生成工具
### 1.2 Knife4j的特点
- 更美观的UI界面
- 支持接口调试时的动态参数
- 提供离线文档导出功能
- 增强的注解支持
## 二、SpringBoot集成Swagger
### 2.1 添加Maven依赖
```xml
<!-- Swagger基础依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- Swagger UI -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SpringBoot集成Swagger示例")
.description("API接口文档")
.version("1.0")
.build();
}
}
注解 | 作用 | 示例 |
---|---|---|
@Api | 修饰Controller类 | @Api(tags = “用户管理”) |
@ApiOperation | 修饰方法 | @ApiOperation(“创建用户”) |
@ApiParam | 修饰参数 | @ApiParam(“用户ID”) Long id |
@ApiModel | 修饰实体类 | @ApiModel(“用户实体”) |
@ApiModelProperty | 修饰字段 | @ApiModelProperty(“用户名”) |
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
@Configuration
@EnableSwagger2
@EnableKnife4j
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
.paths(PathSelectors.any())
.build()
.securitySchemes(securitySchemes())
.securityContexts(securityContexts());
}
private List<ApiKey> securitySchemes() {
return Arrays.asList(
new ApiKey("Authorization", "Authorization", "header"));
}
private List<SecurityContext> securityContexts() {
return Arrays.asList(
SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("/.*"))
.build());
}
}
// 添加JWT认证支持
@Bean
public SecurityScheme apiKey() {
return new ApiKey("token", "token", "header");
}
// 多版本API分组
@Bean
public Docket v1Api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("v1.0")
.select()
.apis(input -> {
String methodName = input.getHandlerMethod().getMethod().getName();
return methodName.contains("V1");
})
.build();
}
# application-prod.properties
knife4j.production=true
swagger.enabled=false
确保添加了资源映射(SpringBoot 2.6+需要):
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
}
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.directModelSubstitute(LocalDate.class, String.class)
.directModelSubstitute(LocalDateTime.class, String.class);
}
@ApiModelProperty(value = "订单状态", allowableValues = "CREATED,PD,DELIVERED")
private OrderStatus status;
src/styles/theme.scss
// 根据注解动态显示接口
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
Knife4jHtmlGenerator generator = new Knife4jHtmlGenerator(
"文档标题",
"/path/to/save",
docket);
generator.generate();
本文详细介绍了在SpringBoot项目中: 1. 集成Swagger生成基础API文档 2. 使用Knife4j增强文档功能 3. 实际开发中的配置技巧 4. 常见问题的解决方案
通过合理配置,可以显著提升团队协作效率。建议生产环境关闭文档功能,或添加权限控制。
注意事项: - Swagger 2.x已停止维护,新项目建议使用OpenAPI 3.0 - 敏感接口应当添加
@ApiIgnore
注解排除 - 文档应当与代码同步更新 “`
该文档共计约2000字,采用Markdown格式编写,包含: 1. 多级标题结构 2. 代码块示例 3. 表格对比 4. 注意事项提示框 5. 配置示例和注解说明 可根据实际项目需求调整具体配置参数和依赖版本。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。