SpringCloud 之 Zuul 网关的搭建和路由(一)

(此次创建的Demo小案例都是基于springBoot【2.0.0.M3】,springCloud【Finchley.M2】创建的,读者若是为了演示正常,请务必保持版本一致)

网关一般作为微服务的门面,可以说是非常的重要了,网关主要通过四种过滤器来实现(前置(Pre),路由(Route),后置(Post),错误(Error)),下面我们通过一个简单的小案例来看看Zuul网关的简单使用

 

1)新建一个项目,勾选如下图圈中的组件

2) 修改我们演示的版本

3)pom文件添加配置,很简单的配置,一个是项目名称,一个是注册中心的地址,一个是项目的端口号

spring:
    application:
      name: api-gateway
    eureka:
      client:
        service.url:
          defaultZone: http://localhost:8761/eureka/
server:
  port: 8060

4)启动类添加我们网关注解【@EnableZuulProxy】

5)启动项目,可以看到已经注册在我们的注册中心上了

6)看看如何路由,刚才的注册中心我们可以到有一个product服务,是之前就准备好的,我们product的访问地址是

http://localhost:8080/product/list

通过我们的路由如何进行访问?

可以访问  http://localhost:8060/product/product/list 

说明:8060是我们配置文件中指定 的端口号;

第一个product是我们注册中心服务的名字;

第二个product以及后面的list,也就是product/list  是我们实际访问的项目地址,可以看到看也可以顺利访问到,路由成功

 7)如何自定义路由?我们的配置文件中需要添加如下配置

#自定义路由
zuul:
  routes:
    myProduct:
      path: /myProduct/**
      serviceId: product
    #简洁写法
    #product: /myProduct/**

依然可以访问

8)如何查看我们所有的配置的路由?配置文件中添加如下配置

#开启我们查看所有路由的权限 ,查看我们所有配置的路由  /application/routes
management:
  security:
    enabled: false

 然后访问  http://localhost:8060/application/routes,可以看到

9)如何不暴露某些服务,使其不允许外部访问?配置如下:

#不暴露访问 的接口,通俗讲就是不可以访问的接口
  ignored-patterns:
    - /product/product/listForOrder
    - /myProduct/product/listForOrder

 这样,配置中的路径再次进行访问就会显示404,无法访问

10)关于路由无法携带cookie的问题,我们自定义路由的时候可以添加如下配置即可解决:

#自定义路由
zuul:
  routes:
    myProduct:
      path: /myProduct/**
      serviceId: product
      #将sensitiveHeaders敏感头设置为空,就不会再过滤cookie,可以解决动态路由无法携带cookie的问题
      sensitiveHeaders:

11)如何实现动态路由?

11.1)首先便是将我们的所有路由配置交由我们的统一配置中心管理,做到自动更新配置,关于如何做到自动更新配置可以看【SpringCloud 之 SpringCloud Bus 自动更新配置的使用】

11.2)然后就是虽然我们的配置更新了,我们的代码如何做到也跟着动态的更新?我们可以在我们的启动类上做出如下的修改

@SpringBootApplication
@EnableZuulProxy
public class ApiGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
    }

    @ConfigurationProperties("zuul")
    @RefreshScope
    public ZuulProperties zuulProperties(){
        return new ZuulProperties();
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值