1.在服务网关的application.yml文 件中的 spring.cloud.gateway.routes 节点下的 - id: user-gateway 下面进行如下配置
spring
:
cloud
:
gateway
:
routes
:
-
id
:
cloud-gateway
uri
:
http
:
//localhost
:
8080
order
:
1
predicates
:
-
Path=/cloud-user/**
-
Name=lq //此处是重点
通过服务网关访问用户微服务时,只有在访问的链接后面添加
?name=lq
参数时才能正确访问用户
微服务。
2.创建一个类,
接收配置文件中的参数
@Data
public class
NameRoutePredicateConfig
implements
Serializable
{
private static final
long
serialVersionUID
= -
3289515863495274396L
;
private
String
name
;
}
3.创建
NameRoutePredicateFactory类,实现
AbstractRoutePredicateFactory类
覆写相关的方法。
@Component
public class
NameRoutePredicateFactory
extends
AbstractRoutePredicateFactory
<
NameRoutePredicateConfig
>
{
public
NameRoutePredicateFactory
() {
super
(
NameRoutePredicateConfig
.
class
);
}
@Override
public
Predicate
<
ServerWebExchange
>
apply
(
NameRoutePredicateConfig config
) {
return
(
serverWebExchange
)
->
{
String
name
=
serverWebExchange
.
getRequest
().
getQueryParams
().
getFirst
(
"name"
);
if
(
StringUtils
.
isEmpty
(
name
)){
name
=
""
;
}
return
name
.
equals
(
config
.
getName
());
};
}
@Override
public
List
<
String
>
shortcutFieldOrder
() {
return
Arrays
.
asList
(
"name"
);
}
}
4.在浏览器输入以下格式的地址,才能获取到相应的信息
http://localhost:8080/cloud
-
user/user/get/1234?name=lq