前言
首先需要说明的是该文是 【带你入门SpringCloud 之 服务网关 Zuul 】的拓展篇,如果还未阅读 【带你入门SpringCloud 之 服务网关 Zuul 】请先阅读完毕后在阅读该文。上文中已经介绍了如何搭建 Zuul 的最简环境,这篇主要介绍内容自定义路由和排除路由配置操作。
阅读本文需要你熟悉 SpringBoot 项目的基本使用即可,还有一点需要注意的是在操作过程中尽量和我本地环境一致,因为环境不一致可能会带来一些问题。我本地环境如下:
- SpringBoot Version: 2.1.0.RELEASE
- SpringCloud Version: Greenwich.RELEASE
- Apache Maven Version: 3.6.0
- Java Version: 1.8.0_144
- IDEA: Spring Tools Suite (STS)
接下来开始具体操作配置介绍!
自定义和排除路配置实操
自定义路由配置
在实际开发中,我们可能更希望统一路由的访问路径,对于客户端调用方感觉就像在低啊用一个服务而不是不同的服务。实现这个功能就需要我们自定义路由,在上文中访问用户服务,和通过网关访问用户服务的地址如下:
用户服务的接口访问地址:http://localhost:8763/userService/user/
通过网关服务访问用户服务的地址:http://localhost:8060/user
/userService/user/
其中标红的地方可以通过配置重新定义路由的名称,在配置文件中添加如下配置:
zuul.routes.zqmyUser.path=/zqmyUser/**
zuul.routes.zqmyUser.service-id=user
添加自定义路由配置后网关服务访问用户服务的地址:
http://localhost:8060/zqmyUser
/userService/user/
需要注意的是影响配置的是 zuul.routes.zqmyUser.path后配置的 value:
/zqmyUser/**
如果该值是/abcUser/**
那么访问用户服务的的路由地址是:http://localhost:8060/abcUser
/userService/user/,与routes后面的名称没有任何关系。
如果你使用的yml 配置文件具体配置如下:
zuul
routes:
zqmyUser
path: /zqmyUser/**
serviceId: user
也可以通过如下简写的方式进行配置:
zuul
routes:
user: /zqmyUser/**
排除路由配置
如果我们不想把获取所有用户服务暴露出去,需要进行如下配置:
zuul.ignored-patterns=/user/userService/user/,/zqmyUser/userService/user/
代码示例
如果你按照上述方式搭建并未成功,可以参考我在GitHub 项目 spring-cloud-get-started 仓库中模块名为:
- spring-cloud-zuul-eureka-service
- spring-cloud-zuul-service
- spring-cloud-zuul-user-service
进行对比查看是否配置有误。
spring-cloud-get-started 项目地址:https://github.com/zhuoqianmingyue/spring-cloud-get-started
转载:https://blog.csdn.net/ljk126wy/article/details/104220849