Zuul路由规则
1.简化路由规则配置
原来的yml配置,
#配置路由规则
zuu1:
routes:
api-wjm:
path: /api-wjm/**
serviceId: 05-springcloud-service-feign
经过简化
当访问地址符合/api-wjm/** 规则的时候,会被自动定位到
05-springcloud-service-feign服务上,不过两行代码有点麻烦,
还可以简化为:
zuu1:
routes:
05-springcloud-service-feign: /api-wjm/**
zuul.routes后面跟着的是服务名,服务名后面跟着的是路径规则,这种配置方式更简单。
2.默认路由配置规则
如果我们什么都不写,系统也给我们提供一套默认的配置规则
默认配置规则如下:
zuu1:
routes:
05-springcloud-service-feign:
path: /05-springcloud-service-feign1/**
serviceId: 05-springcloud-service-feign1
3.默认情况下,Eureka上所有注册的服务都会被Zuul创建映射关系来进行路由。
但是对于我这里的例子来说,我希望:
05-springcloud-service-feign提供服务;
而01-springcloud-service-provider作为服务提供者只对服务消费者提供服务,不对外提供服务。
如果使用默认的路由规则,则Zuul也会自动为01-springcloud-service-provider创建映射规则,
这个时候我们可以采用如下方式来让Zuul跳过01-springcloud-service-provider服务
,不为其创建路由规则
3.1 忽略掉某个 服务的默认路由规则
# 忽略掉服务提供者的默认规则
zuul:
ignored-services: 01-SPRINGCLOUD-SERVICE-PROVIDER
3.2 忽略 服务某个路径下的默认路由规则 (细化)
不给某个服务设置映射规则,这个配置我们可以进一步细化,比如说我不想给
/hello接口路由,那我们可以按如下方式配置:
zuul:
# 忽略掉有hello路径的
ignored-services: /**/hello/**
# 配置网关路由前缀
prefix: /myapi
4. 路由配置通配符的含义
5.API网关 做一些业务处理
一般情况下API网关只是作为各个微服务的统一入口,但是有时候我们可能也需要在API网关
服务上做一些特殊的业务逻辑处理,那么我们可以让请求到达API网关后,再转发给自己本身,
由API网关自己来处理,那么我们可以进行如下的操作:
5.1 在网关服务中 ,添加控制类
在网关服务中 ,添加控制类
@RestController
public class GateWayController {
@RequestMapping("/api/local")
public String hello(){
return "exec the api gateway执行api网关";
}
}
5.2 在yml中配置
zuul:
# 配置网关路由前缀
prefix: /myapi
# 在API网关服务中配置业务规则
routes:
gateway:
path: /gateway/**
url: forward:/api/local