Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
6005c483
提交
6005c483
authored
10月 27, 2022
作者:
liuzhixiong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
gateway集成Knife4j
上级
3e8b2d7d
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
149 行增加
和
2 行删除
+149
-2
pom.xml
yudao-gateway/pom.xml
+17
-2
SwaggerHandler.java
...java/cn/iocoder/yudao/gateway/swagger/SwaggerHandler.java
+63
-0
SwaggerProvider.java
...ava/cn/iocoder/yudao/gateway/swagger/SwaggerProvider.java
+53
-0
application.yaml
yudao-gateway/src/main/resources/application.yaml
+16
-0
没有找到文件。
yudao-gateway/pom.xml
浏览文件 @
6005c483
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
yudao
</artifactId>
<groupId>
cn.iocoder.cloud
</groupId>
...
...
@@ -62,8 +62,23 @@
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-monitor
</artifactId>
</dependency>
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
io.swagger
</groupId>
<artifactId>
swagger-annotations
</artifactId>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-boot-starter
</artifactId>
<version>
3.0.0
</version>
</dependency>
</dependencies>
<build>
<!-- 设置构建的 jar 包名 -->
<finalName>
${project.artifactId}
</finalName>
...
...
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/swagger/SwaggerHandler.java
0 → 100644
浏览文件 @
6005c483
package
cn
.
iocoder
.
yudao
.
gateway
.
swagger
;
import
java.util.Optional
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
reactor.core.publisher.Mono
;
import
springfox.documentation.swagger.web.SecurityConfiguration
;
import
springfox.documentation.swagger.web.SecurityConfigurationBuilder
;
import
springfox.documentation.swagger.web.SwaggerResourcesProvider
;
import
springfox.documentation.swagger.web.UiConfiguration
;
import
springfox.documentation.swagger.web.UiConfigurationBuilder
;
/**
* @author zxliu
* @create 2022-10-25 11:24
*/
@RestController
@RequestMapping
(
"/swagger-resources"
)
public
class
SwaggerHandler
{
@Autowired
(
required
=
false
)
private
SecurityConfiguration
securityConfiguration
;
@Autowired
(
required
=
false
)
private
UiConfiguration
uiConfiguration
;
private
final
SwaggerResourcesProvider
swaggerResources
;
@Autowired
public
SwaggerHandler
(
SwaggerResourcesProvider
swaggerResources
)
{
this
.
swaggerResources
=
swaggerResources
;
}
@GetMapping
(
"/configuration/security"
)
public
Mono
<
ResponseEntity
<
SecurityConfiguration
>>
securityConfiguration
()
{
return
Mono
.
just
(
new
ResponseEntity
<>(
Optional
.
ofNullable
(
securityConfiguration
).
orElse
(
SecurityConfigurationBuilder
.
builder
().
build
()),
HttpStatus
.
OK
));
}
@GetMapping
(
"/configuration/ui"
)
public
Mono
<
ResponseEntity
<
UiConfiguration
>>
uiConfiguration
()
{
return
Mono
.
just
(
new
ResponseEntity
<>(
Optional
.
ofNullable
(
uiConfiguration
).
orElse
(
UiConfigurationBuilder
.
builder
().
build
()),
HttpStatus
.
OK
));
}
@SuppressWarnings
(
"rawtypes"
)
@GetMapping
(
""
)
public
Mono
<
ResponseEntity
>
swaggerResources
()
{
return
Mono
.
just
((
new
ResponseEntity
<>(
swaggerResources
.
get
(),
HttpStatus
.
OK
)));
}
}
yudao-gateway/src/main/java/cn/iocoder/yudao/gateway/swagger/SwaggerProvider.java
0 → 100644
浏览文件 @
6005c483
package
cn
.
iocoder
.
yudao
.
gateway
.
swagger
;
import
java.util.ArrayList
;
import
java.util.List
;
import
lombok.AllArgsConstructor
;
import
org.springframework.cloud.gateway.config.GatewayProperties
;
import
org.springframework.cloud.gateway.route.RouteLocator
;
import
org.springframework.cloud.gateway.support.NameUtils
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.stereotype.Component
;
import
springfox.documentation.swagger.web.SwaggerResource
;
import
springfox.documentation.swagger.web.SwaggerResourcesProvider
;
/**
* @author zxliu
* @create 2022-10-25 11:23
*/
@Component
@Primary
@AllArgsConstructor
public
class
SwaggerProvider
implements
SwaggerResourcesProvider
{
private
final
RouteLocator
routeLocator
;
private
final
GatewayProperties
gatewayProperties
;
@Override
public
List
<
SwaggerResource
>
get
()
{
List
<
SwaggerResource
>
resources
=
new
ArrayList
<>();
List
<
String
>
routes
=
new
ArrayList
<>();
routeLocator
.
getRoutes
().
subscribe
(
route
->
routes
.
add
(
route
.
getId
()));
gatewayProperties
.
getRoutes
().
stream
().
filter
(
routeDefinition
->
routes
.
contains
(
routeDefinition
.
getId
()))
.
forEach
(
route
->
route
.
getPredicates
().
stream
()
.
filter
(
predicateDefinition
->
(
"Path"
).
equalsIgnoreCase
(
predicateDefinition
.
getName
()))
.
forEach
(
predicateDefinition
->
resources
.
add
(
swaggerResource
(
route
.
getId
(),
predicateDefinition
.
getArgs
().
get
(
NameUtils
.
GENERATED_NAME_PREFIX
+
"0"
)
.
replace
(
"**"
,
"v2/api-docs"
))))
);
return
resources
;
}
private
SwaggerResource
swaggerResource
(
String
name
,
String
location
)
{
SwaggerResource
swaggerResource
=
new
SwaggerResource
();
swaggerResource
.
setName
(
name
);
swaggerResource
.
setLocation
(
location
);
swaggerResource
.
setSwaggerVersion
(
"2.0"
);
return
swaggerResource
;
}
}
yudao-gateway/src/main/resources/application.yaml
浏览文件 @
6005c483
...
...
@@ -5,25 +5,41 @@ spring:
cloud
:
# Spring Cloud Gateway 配置项,对应 GatewayProperties 类
gateway
:
discovery
:
locator
:
# gateway开启服务注册和发现的功能,
enabled
:
true
# 将请求路径上的服务名配置为小写(因为服务注册的时候,向注册中心注册时将服务名转成大写的了)
lowerCaseServiceId
:
true
# 路由配置项,对应 RouteDefinition 数组
routes
:
-
id
:
system-admin-api
# 路由的编号
uri
:
grayLb://system-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/admin-api/system/**
filters
:
-
RewritePath=/admin-api/system/v2/api-docs, /v2/api-docs
-
id
:
system-app-api
# 路由的编号
uri
:
grayLb://system-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/app-api/system/**
filters
:
-
RewritePath=/app-api/system/v2/api-docs, /v2/api-docs
-
id
:
infra-admin-api
# 路由的编号
uri
:
grayLb://infra-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/admin-api/infra/**
filters
:
-
RewritePath=/admin-api/infram/v2/api-docs, /v2/api-docs
-
id
:
infra-app-api
# 路由的编号
uri
:
grayLb://infra-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/app-api/infra/**
filters
:
-
RewritePath=/app-api/infra/v2/api-docs, /v2/api-docs
-
id
:
bpm-admin-api
# 路由的编号
uri
:
grayLb://bpm-server
predicates
:
# 断言,作为路由的匹配条件,对应 RouteDefinition 数组
-
Path=/admin-api/bpm/**
filters
:
-
RewritePath=/admin-api/bpm/v2/api-docs, /v2/api-docs
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论