飞道的博客

SpringCloud 服务网关 Zuul 自定义路由和排除路由配置

237人阅读  评论(0)

前言

首先需要说明的是该文是 【带你入门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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场