7-3 SpringCloud快速开发入门:Zuul 的路由规则

接上一章节Zuul 进行请求过滤,这里讲讲使用Zuul 的路由规则

Zuul 的路由规则

(1) 在前面的例子中:

#配置路由规则 zuul.routes.接自定义名字
zuul.routes.api-lixuanhong.path=/api-lixuanhong/**
zuul.routes.api-lixuanhong.serviceId=springcloud-service-feign

当访问地址符合/api-lixuanhong/**规则的时候,会被自动定位到springcloud-service-feign 服务上,不过两行代码有点麻烦,还可以简化为:

#zuul.routes 后面跟着的是服务名,服务名后面跟着的是路径规则
zuul.routes.springcloud-service-feign=/api-lixuanhong/**

zuul.routes 后面跟着的是服务名,服务名后面跟着的是路径规则,这种配置方式更简单。

在这里插入图片描述

(2) 如果映射规则我们什么都不写,系统也给我们提供了一套默认的配置规则默认的配置规则如下:

#默认的规则
zuul.routes.springcloud-service-feign.path=/springcloud-service-feign/**
zuul.routes.springcloud-service-feign.serviceId=springcloud-service-feign

(3) 默认情况下,Eureka 上所有注册的服务已经都被 Zuul 创建映射关系来进行路由,可以通过http://localhost:Zuul端口号/服务名/接口路径,进行访问。但是对于我这里的例子来说,我希望springcloud-service-feign 提供服务; 而 springcloud-service-provider 作为服务提供者只对服务消费者提供服务,不对外提供服务。 如果使用默认的路由规则,则 Zuul 也会自动为springcloud-service-provider 创建映射规则,这个时候我们可以采用如下方式来让 Zuul 跳过 springcloud-service-provider 服务,不为其创建路由规则,使其不能访问:

#忽略掉服务提供者的默认规则
zuul.ignored-services=springcloud-service-provider

不给某个服务设置映射规则,这个配置我们可以进一步细化,比如说我不想给/hello 接口路由,那我们可以按如下方式配置:

#忽略掉某一些接口路径
zuul.ignored-patterns=/**/hello/**

在这里插入图片描述

在这里插入图片描述

此外,我们也可以统一的为路由规则增加前缀,设置方式如下:

#配置网关路由的前缀
zuul.prefix=/myapi

在这里插入图片描述
在这里插入图片描述

此时我们的访问路径就变成了 http://localhost:8084/myapi/springcloud-service-feign/web/hello

通配符含义举例说明
匹配任意单个字符/springcloud-service-feign/?匹配 /springcloud-service-feign/a, /springcloud-service-feign/b, /springcloud-service-feign/c 等
*匹配任意数量的字符/springcloud-service-feign/*匹配 /springcloud-service-feign/aaa, /springcloud-service-feign/bbb, /springcloud-service-feign/ccc 等,无法匹配 /springcloud-service-feign/a/b/c
**匹配任意数量的字符/springcloud-service-feign/**匹配 /springcloud-service-feign/aaa, /springcloud-service-feign/bbb, /springcloud-service-feign/ccc 等, 也可以匹配 /springcloud-service-feign/a/b/c

(5) 一般情况下 API 网关只是作为各个微服务的统一入口,但是有时候我们可能也需要在 API 网关服务上做一些特殊的业务逻辑处理,那么我们可以让请求到达 API 网关后,再转发给自己本身,由 API 网关自己来处理,那么我们可以进行如下的操作:
在 springcloud-api-gateway 项目中新建如下 Controller:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GateWayController {
    @RequestMapping("/api/local")
    public String hello() {
    	System.out.println("在api gateway中执行业务处理...");
        return "exec the api gateway.";
    }
}

在这里插入图片描述

然后在 application.properties 文件中配置:

zuul.routes.gateway.path=/gateway/** 
zuul.routes.gateway.url=forward:/api/local

在这里插入图片描述

进行访问

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值