Spring Cloud 学习笔记六:搭建微服务工程之Zuul 路由配置详解

目录

Zuul 路由配置详解

指定具体服务路由

路由前缀

本地跳转


Zuul 路由配置详解

当 Zuul 集成 Eureka 之后,其实就可以为 Eureka 中所有的服务进行路由操作了,默认的转发规则就是“API 网关地址+访问的服务名称+接口 URI”。

在给服务指定名称的时候,应尽量短一点,这样的话我们就可以用默认的路由规则进行请求,不需要为每个服务都定一个路由规则,这样就算新增了服务,API 网关也不用修改和重启了。

默认规则举例:

  • API 网关地址:http://localhost:8001

  • 用户服务名称:blog-user-web。

  • 用户登录接口:/user/login。

那么通过 Zuul 访问登录接口的规则就是 http://localhost:8001/blog-user-web/user/login

 

指定具体服务路由

我们可以为每一个服务都配置一个路由转发规则:

zuul:
  routes:
    blog-user-web:
      path: /userapi/**

上述代码将 blog-user-web 服务的路由地址配置成了 userapi,也就是当需要访问 blog-user-web 中的接口时,我们可以通过 /userapi/user/query/1 来进行访问。这其实就是将服务名称变成了我们自定义的名称。

有的时候服务名称太长了,放在 URL 中不太友好,我们希望它变得更友好一点,就可以这么去配置。这里的 /userapi/** 后面一定要配置两个星号,两个星号表示可以转发任意层级的 URL,比如 /userapi/user/query/1。如果只配置一个星号,那么就只能转发一级,比如/userapi/user/

 

路由前缀

有的时候我们会想在 API 前面配置一个统一的前缀,比如像 http://localhost:8001/userapi/user/login 这样登录接口,如果想将其变成 http://localhost:8001/rest/userapi/user/login,即在每个接口前面加一个 rest,此时我们就可以通过 Zuul 中的配置来实现:

zuul:
  prefix: /rest

 

本地跳转

Zuul 的 API 路由还提供了本地跳转功能,通过 forward 就可以实现。

zuul:
  prefix: /rest
  routes:
    local:
      path: /api/**
      url: forward:/local

当我们想在访问 api/1 的时候会路由到本地的 local/1 上去,就可以参照上述代码实现。local 是本地接口需要我们自行添加,因此我们要建一个 Controller,代码如下所示:

@RestController
public class LocalController {

    @GetMapping("/local/{id}")
    public String local(@PathVariable String id) {
        return id;
    }
}

然后访问 http://localhost:8001/rest/api/1, 就可以看到我们想要的返回结果了,如图所示:

访问结果

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stary1993

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值