
Spring Cloud Zuul(服务网关)
发布日期:2021-05-09 04:58:05
浏览次数:20
分类:博客文章
本文共 4636 字,大约阅读时间需要 15 分钟。
新建应用:api-gateway
pom.xml
4.0.0 com.example api-gateway 0.0.1-SNAPSHOT jar api-gateway Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 2.0.6.RELEASE UTF-8 UTF-8 1.8 Finchley.SR2 org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-netflix-zuul org.springframework.cloud spring-cloud-starter-zookeeper-discovery org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
application.yml
server: port: 9000management: endpoints: web: exposure: include: '*' server: port: 12345zuul: routes: configserver: #自定义的名字 path: /myConfig/** serviceId: config user: path: /myUser/** serviceId: provider ignored-patterns: - /config/** - /gateway/** sensitive-headers: #ignore-local-service: true 忽略默认的路由
bootstrap.yml
spring: application: name: gateway cloud: zookeeper: discovery: register: true connect-string: 192.168.3.201:2182 config: discovery: service-id: config enabled: true
启用@EnableZuulProxy
package com.example.apigateway;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@SpringBootApplication@EnableZuulProxypublic class ApiGatewayApplication { public static void main(String[] args) { SpringApplication.run(ApiGatewayApplication.class, args); }}
可以使用:ip:端口/actuator/routes 这样的地址看到已经注册的路由
自定义过滤器:需要继承ZuulFilter
package com.example.apigateway.filter;import com.example.apigateway.util.CookUtil;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import com.netflix.zuul.exception.ZuulException;import org.apache.commons.lang.StringUtils;import org.springframework.http.HttpStatus;import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;@Componentpublic class TokenFilter extends ZuulFilter { @Override /** * pre * post * route * error */ public String filterType() { return PRE_TYPE; } @Override public int filterOrder() { return PRE_DECORATION_FILTER_ORDER - 1; } @Override public boolean shouldFilter() { return true; } @Override public Object run() throws ZuulException { // 获取请求对象 RequestContext context = RequestContext.getCurrentContext(); HttpServletRequest request = context.getRequest(); // 获取地址栏传入的参数 String token = CookUtil.getCookieValue("token", request).getValue(); if (StringUtils.isEmpty(token)) { context.setSendZuulResponse(false); context.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value()); } return null; }}
完整代码:
https://gitee.com/lm970585581/cloud-config/tree/master/api-gateway
发表评论
最新留言
不错!
[***.144.177.141]2025年04月21日 12时55分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
采坑 - 字符串的 "" 与 pd.isnull()
2019-03-06
《我是猫》总结
2019-03-06
mcrypt加密以及解密过程
2019-03-06
go等待N个线程完成操作总结
2019-03-06
Python 之网络式编程
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(6.9-6.15)
2019-03-06
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2019-03-06
上周热点回顾(5.9-5.15)
2019-03-06
上周热点回顾(1.23-1.29)
2019-03-06
【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
2019-03-06
Python 简明教程 --- 20,Python 类中的属性与方法
2019-03-06
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2019-03-06
稀疏数组
2019-03-06
Android MediaPlayer setDataSource failed
2019-03-06
虚拟机搭建hadoop环境
2019-03-06
DataStax Bulk Loader教程(四)
2019-03-06