![zuul路由网关 zuul路由网关](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsdFlXZGxjekl3TVRndVkyNWliRzluY3k1amIyMHZZbXh2Wnk4ek9UTTJNakF2TWpBeE9EQTNMek01TXpZeU1DMHlNREU0TURjeU1URTBOVE15T1RBeE1DMDRNelV4TnpRM01qZ3VjRzVuLmpwZw%3D%3D.jpg?w=700&webp=1)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
server:
port: 5000
spring:
application:
name: zuul-demo
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serverUrl:
defaultZone: http://127.0.0.1:8761/eureka
zuul:
routes:
smsapi:
path: /sms/**
serviceId: sms-module
consumerapi:
path: /consumertest/**
serviceId: consumer-module
![zuul路由网关 zuul路由网关](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsdFlXZGxjekl3TVRndVkyNWliRzluY3k1amIyMHZZbXh2Wnk4ek9UTTJNakF2TWpBeE9EQTNMek01TXpZeU1DMHlNREU0TURjeU1URTBOVFkxTVRRNE5DMHhNelUzTWprMk5UZ3pMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
![zuul路由网关 zuul路由网关](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsdFlXZGxjekl3TVRndVkyNWliRzluY3k1amIyMHZZbXh2Wnk4ek9UTTJNakF2TWpBeE9EQTNMek01TXpZeU1DMHlNREU0TURjeU1URTBOVGN5TXpjM05pMDROamt3TmpVNU16WXVjRzVuLmpwZw%3D%3D.jpg?w=700&webp=1)
![zuul路由网关 zuul路由网关](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsdFlXZGxjekl3TVRndVkyNWliRzluY3k1amIyMHZZbXh2Wnk4ek9UTTJNakF2TWpBeE9EQTNMek01TXpZeU1DMHlNREU0TURjeU1URTBOVGMxTnpRNE5pMHhNalV4TWpBMk16UTJMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
@Component
public class MyFilter extends ZuulFilter {
@Override
public String filterType() {
return FilterConstants.PRE_TYPE;
}
@Override
public int filterOrder() {
return 0;
}
//是否走过滤逻辑
@Override
public boolean shouldFilter() {
return true;
}
//判断url中是否包含参数testParam,不包含则拦截请求
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
String testParam = request.getParameter("testParam");
if( null == testParam){
System.out.println("缺失关键参数,驳回请求");
ctx.setSendZuulResponse(false);//是否把该请求转发给具体服务
ctx.setResponseStatusCode(401);
try {
ctx.getResponse().getWriter().write("qing jiancha canshu shifou wanzheng");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
return null;
}
}
![zuul路由网关 zuul路由网关](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsdFlXZGxjekl3TVRndVkyNWliRzluY3k1amIyMHZZbXh2Wnk4ek9UTTJNakF2TWpBeE9EQTNMek01TXpZeU1DMHlNREU0TURjeU1URTBOVGt6TVRFd015MHhOREV4TmpneE1URXdMbkJ1Wnc9PS5qcGc%3D.jpg?w=700&webp=1)
![zuul路由网关 zuul路由网关](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsdFlXZGxjekl3TVRndVkyNWliRzluY3k1amIyMHZZbXh2Wnk4ek9UTTJNakF2TWpBeE9EQTNMek01TXpZeU1DMHlNREU0TURjeU1URTFNREF3TkRRNU1DMDJNalE1TkRJME9Ua3VjRzVuLmpwZw%3D%3D.jpg?w=700&webp=1)
@Component
public class MyFallbackProvider implements ZuulFallbackProvider {
@Override
public String getRoute() {
return "sms-module"; //匹配所有,用“*”
}
@Override
public ClientHttpResponse fallbackResponse() {
return new ClientHttpResponse() {
@Override
public HttpStatus getStatusCode() throws IOException {return HttpStatus.OK;}
@Override
public int getRawStatusCode() throws IOException {return 200;}
@Override
public String getStatusText() throws IOException { return "OK";}
@Override
public void close() {}
@Override
public InputStream getBody() throws IOException {
return new ByteArrayInputStream("{\"msg\":\"error, 少年,你的程序出异常了,这里是失败回调函数\"}".getBytes());
// return new ByteArrayInputStream("少年,你的程序出异常了,这里是失败回调函数".getBytes());
}
@Override
public HttpHeaders getHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
return headers;
}
};
}
}
![zuul路由网关 zuul路由网关](https://image.shishitao.com:8440/aHR0cDovL2Jic21heC5pa2FmYW4uY29tL3N0YXRpYy9MM0J5YjNoNUwyaDBkSEJ6TDJsdFlXZGxjekl3TVRndVkyNWliRzluY3k1amIyMHZZbXh2Wnk4ek9UTTJNakF2TWpBeE9EQTNMek01TXpZeU1DMHlNREU0TURjeU1URTFNREV5T1RRd09TMDFNVEkzTVRJd05qVXVjRzVuLmpwZw%3D%3D.jpg?w=700&webp=1)
zuul路由网关的更多相关文章
-
【七】zuul路由网关
一.zuul是什么?zuul 包含以下两个最主要的功能:1.路由功能: 负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础.2.过滤器功能: 则负责对请求的处理过程进行干预,是实现请 ...
-
SpringCloud 进阶之Zuul(路由网关)
1. Zuul(路由网关) Zuul 包含了对请求的路由和过滤两个最主要的功能; 路由功能:负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础; 过滤功能:负责对请求的处理过程进行干 ...
-
SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理
前言 在上篇中介绍了SpringCloud Zuul路由网关的基本使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由 ...
-
spring cloud 2.x版本 Zuul路由网关教程
前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...
-
SpringCloud的入门学习之概念理解、Zuul路由网关
1.Zuul路由网关是什么? 答:Zuul包含了对请求的路由和过滤两个最主要的功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进 ...
-
SpringCloud学习笔记(八):Zuul路由网关
概述 是什么? Zuul包含了对请求的路由和过滤两个最主要的功能: 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请 ...
-
SpringCloud与微服务Ⅸ --- Zuul路由网关
一.Zool是什么 Zuul包含了对请求路由和过滤两个最主要的功能: 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现 ...
-
zuul路由网关集成ssl,实现http到https的转变
1 前言 最近几天刚开始接触微信小程序的开发,才接触到了https的概念(微信小程序中的请求必须为https请求,不然请求无法成功).https算是对http的安全封装,在http的基础上加了ssl证 ...
-
Spring-Cloud之Zuul路由网关-6
一.为什么需要Zuul? Zuul 作为微服务系统的网关组件,用于构建边界服务( Edge Service ),致力于动态路由.过滤.监控.弹性伸缩和安全.Zuul 作为路由网关组件,在微服务架构中有 ...
随机推荐
-
记2016腾讯 TST 校招面试经历,电面、笔试写代码、技术面、hr面,共5轮
(出处:http://www.cnblogs.com/linguanh/) 前序: 距离 2016 腾讯 TST 校招面试结束已经5天了,3月27日至今,目前还在等待消息.从投简历到两轮电面,再到被 ...
-
iOS开发:创建真机调试证书及描述文件
iOS开发:创建真机调试证书及描述文件 关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于开发证书,生产证书,in_house证书,add_Hoc证书申请过程中的问题,以及上架 ...
-
jquery 替换文本内容
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
-
Linux Top 命令解析 比较详细--转
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...
-
Nginx报错:Sorry, the page you are looking for is currently unavailable. Please try again later.
查看了进程, nginx, php-fpm都在运行, 排除程序错误, 那么就是配置的问题了. 一个可能的错误, 是由于配置中的 fastcgi_pass 配置错了 错误的配置如下 server { l ...
-
bzoj3939 【USACO 2015 FEB GOLD 】cow hopscotch
Description 就像人类喜欢玩"跳房子"的游戏,农民约翰的奶牛已经发明了该游戏的一个变种自己玩.由于笨拙的动物体重近一吨打,牛跳房子几乎总是以灾难告终,但这是没有阻止奶牛几 ...
-
【开源】做了一个WinForm窗体的投影组件,能够为窗口添加影子效果
最近手头上的项目终于忙得差不多了,想起好久没有更新了的NanUI,再看着每天QQ群未读消息闪烁的标志,突然才发现似乎愧对了群里各位喜爱NanUI的朋友们.于是乎,就想趁这几天有时间,好好的修复一下Na ...
-
Android 开发者,如何提升自己的职场竞争力?
前言 该文章是笔者参加 Android 巴士线下交流会成都站 的手写讲稿虚拟场景,所以大家将就看一下. 开始 大家好,我是刘世麟,首先感谢安卓巴士为我们创造了这次奇妙的相遇.现场的氛围也让我十分激动. ...
-
【转】Entity Framework 5.0系列之自动生成Code First代码
在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power Tools ...
-
Spring Boot: Yaml配置文件 以及 @ConfigurationProperties属性获取
Yaml配置文件 概述 Spring Boot在支持application.properties配置文件的同时,也支持application.yaml配置文件. 配置文件中的属性,可以通过: 通过@V ...