|
преди 3 месеца | |
---|---|---|
.. | ||
src | преди 3 месеца | |
README.md | преди 3 месеца | |
pom.xml | преди 3 месеца |
基于 Knife4j 4.x + OpenAPI 3 规范的接口文档增强解决方案。
在需要暴露 API 文档的微服务的 pom.xml
中添加依赖:
<dependency>
<groupId>cn.hfln.framework</groupId>
<artifactId>knife4j-doc-spring-boot-starter</artifactId>
<version>${project.version}</version>
</dependency>
在 application.yml
中添加配置:
lnxx:
knife4j:
doc:
enable: true
base-package: com.your.package # 接口所在包路径
title: 服务名称
description: 服务描述
version: ${project.version}
enable-security: true # 是否启用安全认证
在网关项目的 pom.xml
中添加依赖:
<dependency>
<groupId>cn.hfln.framework</groupId>
<artifactId>knife4j-doc-spring-boot-starter</artifactId>
<version>${project.version}</version>
</dependency>
在网关的 application.yml
中添加如下配置:
spring:
cloud:
gateway:
routes:
# 文档聚合路由
- id: knife4j
uri: http://localhost:${server.port}
predicates:
- Path=/v3/api-docs/**
filters:
- RewritePath=/v3/api-docs/(?<path>.*), /$\{path}/v3/api-docs
lnxx:
knife4j:
doc:
enable: true
title: API 文档中心
description: 微服务接口文档
version: ${project.version}
enable-security: true
# 配置需要聚合的微服务文档
springdoc:
swagger-ui:
path: /doc.html
api-docs:
enabled: true
group-configs:
- group: 'default'
paths-to-match: '/**'
packages-to-scan: cn.hfln
@Configuration
public class Knife4jGatewayConfig {
@Bean
public RouterFunction<ServerResponse> apiRouter() {
return RouterFunctions.route()
.GET("/v3/api-docs/swagger-config", request ->
ServerResponse.ok().bodyValue(swaggerConfig()))
.build();
}
private Map<String, Object> swaggerConfig() {
Map<String, Object> config = new HashMap<>();
// 配置要聚合的微服务,key 为服务名,value 为文档地址
Map<String, String> services = new HashMap<>();
services.put("用户服务", "/user-service/v3/api-docs");
services.put("订单服务", "/order-service/v3/api-docs");
// ... 添加更多服务
config.put("urls", services);
return config;
}
}
http://服务地址:端口/doc.html
http://网关地址:端口/doc.html
文档无法访问
网关聚合失败
认证失败
配置项 | 说明 | 默认值 |
---|---|---|
lnxx.knife4j.doc.enable | 是否启用文档 | true |
lnxx.knife4j.doc.base-package | 接口扫描包路径 | - |
lnxx.knife4j.doc.title | 文档标题 | API 文档 |
lnxx.knife4j.doc.description | 文档描述 | - |
lnxx.knife4j.doc.version | 文档版本 | 1.0.0 |
lnxx.knife4j.doc.enable-security | 是否启用安全认证 | false |