Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datax-cloud
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄营
datax-cloud
Commits
99ccb4ae
Commit
99ccb4ae
authored
Apr 02, 2020
by
yuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2.0.0项目初始化
parent
2748b800
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
103 additions
and
11 deletions
+103
-11
datax-gateway-dev.yml
datax-config/src/main/resources/config/datax-gateway-dev.yml
+12
-5
pom.xml
datax-gateway/pom.xml
+10
-0
SwaggerProvider.java
...rc/main/java/cn/datax/gateway/config/SwaggerProvider.java
+5
-6
SwaggerHeaderFilter.java
...ain/java/cn/datax/gateway/filter/SwaggerHeaderFilter.java
+30
-0
SwaggerHandler.java
...rc/main/java/cn/datax/gateway/handler/SwaggerHandler.java
+46
-0
No files found.
datax-config/src/main/resources/config/datax-gateway-dev.yml
View file @
99ccb4ae
...
...
@@ -12,8 +12,6 @@ spring:
locator
:
enabled
:
true
lower-case-service-id
:
true
default-filters
:
-
StripPrefix=1
routes
:
# 认证中心
-
id
:
datax-auth
...
...
@@ -31,6 +29,8 @@ spring:
predicates
:
-
Path=/system/**
filters
:
-
SwaggerHeaderFilter
-
StripPrefix=1
-
name
:
Hystrix
args
:
name
:
systemHystrix
...
...
@@ -41,6 +41,8 @@ spring:
predicates
:
-
Path=/email/**
filters
:
-
SwaggerHeaderFilter
-
StripPrefix=1
-
name
:
Hystrix
args
:
name
:
emailHystrix
...
...
@@ -51,6 +53,8 @@ spring:
predicates
:
-
Path=/file/**
filters
:
-
SwaggerHeaderFilter
-
StripPrefix=1
-
name
:
Hystrix
args
:
name
:
fileHystrix
...
...
@@ -61,7 +65,8 @@ spring:
predicates
:
-
Path=/data/factory/**
filters
:
-
StripPrefix=1
-
SwaggerHeaderFilter
-
StripPrefix=2
-
name
:
Hystrix
args
:
name
:
dataFactoryHystrix
...
...
@@ -72,7 +77,8 @@ spring:
predicates
:
-
Path=/data/market/**
filters
:
-
StripPrefix=1
-
SwaggerHeaderFilter
-
StripPrefix=2
-
name
:
Hystrix
args
:
name
:
dataMarketHystrix
...
...
@@ -82,7 +88,8 @@ spring:
predicates
:
-
Path=/data/api/**
filters
:
-
StripPrefix=1
-
SwaggerHeaderFilter
-
StripPrefix=2
-
name
:
Hystrix
args
:
name
:
dataApiHystrix
...
...
datax-gateway/pom.xml
View file @
99ccb4ae
...
...
@@ -28,6 +28,16 @@
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
<artifactId>
datax-common-core
</artifactId>
<version>
2.0.0
</version>
...
...
datax-gateway/src/main/java/cn/datax/gateway/config/SwaggerProvider.java
View file @
99ccb4ae
...
...
@@ -3,14 +3,15 @@ package cn.datax.gateway.config;
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
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
@Component
@Primary
...
...
@@ -21,11 +22,10 @@ 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
ArrayLis
t
<>();
Set
<
String
>
routes
=
new
HashSe
t
<>();
//取出gateway的route
routeLocator
.
getRoutes
().
subscribe
(
route
->
routes
.
add
(
route
.
getId
()));
//结合配置的route-路径(Path),和route过滤,只获取有效的route节点
...
...
@@ -33,8 +33,7 @@ public class SwaggerProvider implements SwaggerResourcesProvider {
.
forEach
(
routeDefinition
->
routeDefinition
.
getPredicates
().
stream
()
.
filter
(
predicateDefinition
->
(
"Path"
).
equalsIgnoreCase
(
predicateDefinition
.
getName
()))
.
forEach
(
predicateDefinition
->
resources
.
add
(
swaggerResource
(
routeDefinition
.
getId
(),
predicateDefinition
.
getArgs
().
get
(
NameUtils
.
GENERATED_NAME_PREFIX
+
"0"
)
.
replace
(
"/**"
,
API_URI
)))));
"/"
+
routeDefinition
.
getId
()
+
API_URI
))));
return
resources
;
}
...
...
@@ -42,7 +41,7 @@ public class SwaggerProvider implements SwaggerResourcesProvider {
SwaggerResource
swaggerResource
=
new
SwaggerResource
();
swaggerResource
.
setName
(
name
);
swaggerResource
.
setLocation
(
location
);
swaggerResource
.
setSwaggerVersion
(
"
1
.0"
);
swaggerResource
.
setSwaggerVersion
(
"
2
.0"
);
return
swaggerResource
;
}
}
datax-gateway/src/main/java/cn/datax/gateway/filter/SwaggerHeaderFilter.java
0 → 100644
View file @
99ccb4ae
package
cn
.
datax
.
gateway
.
filter
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.cloud.gateway.filter.GatewayFilter
;
import
org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory
;
import
org.springframework.http.server.reactive.ServerHttpRequest
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.server.ServerWebExchange
;
@Component
public
class
SwaggerHeaderFilter
extends
AbstractGatewayFilterFactory
{
private
static
final
String
HEADER_NAME
=
"X-Forwarded-Prefix"
;
private
static
final
String
URI
=
"/v2/api-docs"
;
@Override
public
GatewayFilter
apply
(
Object
config
)
{
return
(
exchange
,
chain
)
->
{
ServerHttpRequest
request
=
exchange
.
getRequest
();
String
path
=
request
.
getURI
().
getPath
();
if
(!
StringUtils
.
endsWithIgnoreCase
(
path
,
URI
))
{
return
chain
.
filter
(
exchange
);
}
String
basePath
=
path
.
substring
(
0
,
path
.
lastIndexOf
(
URI
));
ServerHttpRequest
newRequest
=
request
.
mutate
().
header
(
HEADER_NAME
,
basePath
).
build
();
ServerWebExchange
newExchange
=
exchange
.
mutate
().
request
(
newRequest
).
build
();
return
chain
.
filter
(
newExchange
);
};
}
}
datax-gateway/src/main/java/cn/datax/gateway/handler/SwaggerHandler.java
0 → 100644
View file @
99ccb4ae
package
cn
.
datax
.
gateway
.
handler
;
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.*
;
import
java.util.Optional
;
@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
));
}
@GetMapping
(
""
)
public
Mono
<
ResponseEntity
>
swaggerResources
()
{
return
Mono
.
just
((
new
ResponseEntity
<>(
swaggerResources
.
get
(),
HttpStatus
.
OK
)));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment