我们来学习服务网关api-gateway在主类上加一个注解@EnableZuulProxy,我们希望访问gateway的时候,可以路由到product的这个接口上,我们来拿这个接口作为实验@GetMapping("/list")
public List<ProductInfo> list() {//1. 查询所有在架的商品List<ProductInfo> productInfoList = productService.findUpAll();return productInfoList;
}localhost:7900/product/list再来启动我们的网关,要怎么通过网关来访问这个接口呢localhost:8040/product/product/list前面的product是服务的名字,这样子就访问到了,你也可以路由到其他的地址,这上面的都可以路由,比如我们挑一个CONFIG,挑CONFIG服务的某个接口,我们访问一下localhost:8080/order-test.yml可以访问,前面填服务的名字,localhost:8040/config/order-test.yml也是可以访问得到的,我们也 可以试一下POST接口,我们使用POSTMAN来测试,传过去的内容是这个商品的ID,也能够获取的到,这就是路由转发的基本的功能,我们会发现,使用Zuul这个组件呢,什么都没配置,非常轻松的就实现了路由的功能,你看我们只是引入了依赖,然后加这么一个注解,就实现了,但同时也有他的弊端,你访问的地址必须按照他的规则来,CONFIG是应用的名字,接上他的地址,那我想自定义怎么办呢,就拿开始的PRODUCT来说,那我想换一个地址,localhost:8040/product/product/list比如叫myProduct,这样的话我要怎么来做呢,自定义路由,这个时候你就要使用到Zuul的配置了,zuul.routes,下面是你要定义规则的名字,比如就叫myProduct.path,这是你的URL地址zuul.routes.myProduct.path=/myProduct/**以及你要路由到哪个服务上去,服务名叫product,zuul.routes.myProduct.service-id=product再不看一下这个配置怎么配的,访问一下新的地址,localhost:8040/myProduct/product/list那有没有地方可以让我看到所有路由的规则呢,其实是有的,我们来找一下,找一下他的mapper,你要访问/application/routeslocalhost:8040/application/routes提示权限问题,这里需要加这么一个配置management.security.enabled=false写成false,这就可以看到了http://localhost:8040/routes{"/myProduct/**":"product","/product/**":"product"}它上面所有的路由的功能,myProduct路由到product这个服务,product也同样的路由到这个服务,所以你看到我先做写成product也是可以的localhost:8040/product/product/list这里注意一下,zuul.routes.myProduct.path=/myProduct/**这里的myProduct我们是可以随意来定义的,比如我写aaaa也没关系zuul.routes.aaaa.path=/myProduct/**而/myProduct/**这个就不能瞎写了,这个必须是真实的访问路径,zuul.routes.aaaa.path=/myProduct/**
zuul.routes.aaaa.service-id=product这个的意思就是myProduct/product/list路由到product/product/list我们再来看一下配置的规则,如果你只是配置两项的话呢,他其实还有一个简便的写法,你在routes下面可以直接写service-id,后面直接跟上pathzuul.routes.product=/myProduct/**把之前的给注释掉,也是可以访问http://localhost:8040/myProduct/product/list既然可以控制路由到某个地址,那我能不能禁止某个地址的路由呢,说起来有点绕,我希望这个接口暴露出去,给移动端或者WEB端访问,怎么写呢,zuul.ignoredPatternsprivate Set<String> ignoredPatterns = new LinkedHashSet<>();配置是一个Set,你可以配置多个,怎么在yml里面配置Set呢
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn.cloud</groupId><artifactId>api-gateway</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>cn.learn</groupId><artifactId>microcloud02</artifactId><version>0.0.1</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties>  <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId></dependency></dependencies><!-- 这个插件,可以将应用打包成一个可执行的jar包 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
server.port=8040
spring.application.name=api-gateway
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
eureka.client.serviceUrl.defaultZone=http://admin:1234@10.40.8.152:8761/eureka
#eureka.instance.appname=api-gateway
#zuul.routes.user-route.service-id=product
#zuul.ignoredServices=microservice-consumer-movie-ribbon-hystrix
#zuul.routes.user-route.path=/user/**
#zuul.routes.user-route.url=http://localhost:7900/
#ribbon.eureka.enabled=false
#microservice-simple-provider-user.ribbon.listOfServers=http://localhost:7900/,http://localhost:7901/#zuul.routes.myProduct.path=/myProduct/**
#zuul.routes.myProduct.service-id=product
zuul.routes.product=/myProduct/**
management.security.enabled=false
package com.learn.cloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@EnableZuulProxy
@SpringBootApplication
public class APIGatewayApplication {public static void main(String[] args) {SpringApplication.run(APIGatewayApplication.class, args);}//  @Bean
//  public PatternServiceRouteMapper serviceRouteMapper() {
//      return new PatternServiceRouteMapper(
//          "(?<name>^.+)-(?<version>v.+$)",
//          "${version}/${name}");
//  }
}

Zuul:路由转发,排除和自定义相关推荐

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

    前言 首先需要说明的是该文是 [带你入门SpringCloud 之 服务网关 Zuul ]的拓展篇,如果还未阅读 [带你入门SpringCloud 之 服务网关 Zuul ]请先阅读完毕后在阅读该文. ...

  2. SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理

    前言 在上篇中介绍了SpringCloud Zuul路由网关的基本使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由 ...

  3. Zuul微服务网关、容错与监控、Zuul路由端点、路由配置、Zuul上传文件、Zuul过滤器、Zuul异常处理、Zuul回退、Zuul聚合微服务

    一.为什么要使用微服务网关 二.Zuul 1.编写Zuul微服务网关 2.Zuul的Hystrix容错与监控 3.Zuul的路由端点 4.路由配置 1.自定义指定微服务的访问路径 2.忽略指定微服务 ...

  4. 跟着狂神学SpringCloud(Rest环境搭建+Eureka服务注册与发现+ribbon+Feign负载均衡+Hystrix+服务熔断+Zuul路由网关+SpringCloud config分布)

    跟着狂神学SpringCloud SpringCloud 回顾之前的知识- JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot ...

  5. Spring Cloud(八)Zuul路由网关

    文章目录 1 概述 1.1 什么是Zuul 1.2 为什么要建造Zuul 1.3 Zuul有哪些功能 1.4 理解 2 Zuul路由功能 2.1 创建zuul服务 2.2 测试 2.3 路由访问映射规 ...

  6. SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理...

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理 一.大致 ...

  7. 第五篇:路由网关(zuul) zuul路由 服务过滤 (Finchley版本)V2.0_dev

    前言: 在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统. 在Spring C ...

  8. SpringCloud--GateWay搭建及路由转发规则介绍

    一. Spring Cloud Gateway Spring Cloud GateWay 是 Spring Cloud 的⼀个全新项⽬,⽬标是取代 Netflix Zuul,它基于 Spring5.0+ ...

  9. 【七】zuul路由网关

    一.zuul是什么?zuul 包含以下两个最主要的功能:1.路由功能: 负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础.2.过滤器功能: 则负责对请求的处理过程进行干预,是实现请 ...

最新文章

  1. 各种pytorch项目
  2. Java之于Kotlin对比(Android)
  3. 微信订阅号开发笔记(三)
  4. 需求文档可以不签字吗之三-一个实例
  5. CSS3新特性(整理贴)
  6. JSONObject 和 GSON 解析 JSON 数据详解(转)
  7. css property 和 attribute 的区别
  8. PHP-cli 日志彩色玩法 echo \033[1;33m Hello World. \033[0m \n;
  9. java架构师进阶之独孤九剑:数据结构以及书籍推荐
  10. Java 1.1.2 字符串之拼接
  11. 一张图学会python-一张图 python
  12. HTTP协议状态码大全
  13. 歌词服务器文件名,lrc是什么格式,MP3的LRC格式歌词同步方法
  14. 工厂信息化系统(ERP、PLM、MES、WMS)架构设计与建设规划
  15. java 数组 重复数据结构_Java数据结构和算法( 二 ) ## 数组
  16. python抓取京东商品评价总数_python爬虫抓取和分析京东商城评价
  17. MyJzvdStd+JZMediaExo
  18. FileSystemWatcher 基础用法
  19. 【华为OD笔试真题JAVA实现】幼儿园找出同班的小朋友
  20. 第四章 证券投资基金的监管

热门文章

  1. 【转】Java 枚举7常见种用法
  2. How to use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem
  3. i2c--insmod
  4. io-同步 异步 阻塞 非阻塞
  5. java 语言循环总结
  6. JSP学习总结:2006
  7. 绥化a货翡翠,拉萨a货翡翠
  8. 指针A - 签到题(顺序三元组)
  9. mac安装mysql遇到的坑
  10. 关于PID的如何修改的FAQ