文章目录
一. 前台网关搭建
- 一. 前台网关搭建
- 二. Zuul网关过滤器
前台网关的搭建,与上一节 黑马十次方项目day08-03SpringCloud之Netflix Zuul服务网关搭建 基本步骤相同, 只是把模块名称改为了tensquare_web, 端口号改为了9012. 其他的都相同.
二. Zuul网关过滤器在Zuul的网关中,可配置过滤器. 现在在tensquare_manager模块中配置过滤器, 在com.tensquare.manager.filter.ManagerFilter下创建过滤器,内容如下
package com.tensquare.manager.filter;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.stereotype.Component;
/**
* 类名称:ManagerFilter
* 类描述: zuul 网关过滤器
*
* @author: taohongchao
* 创建时间:2019/2/23 14:08
* Version 1.0
*/
@Component
public class ManagerFilter extends ZuulFilter {
/**
* 方法名: filterType
* 方法描述: 过滤器执行的类型
* pre 代表在执行之前执行, 一般使用pre 进行之前过滤
* post 代表在当前操作之后过滤
* 修改日期: 2019/2/23 14:10
* @param
* @return java.lang.String
* @author taohongchao
* @throws
*/
@Override
public String filterType() {
return "pre";
}
/**
* 方法名: filterOrder
* 方法描述: 多个过滤器执行顺序, 数字越小,代表越前执行
* 修改日期: 2019/2/23 14:12
* @param
* @return int
* @author taohongchao
* @throws
*/
@Override
public int filterOrder() {
return 0;
}
/**
* 方法名: shouldFilter
* 方法描述: 当前过滤器是否开启, true代表开启, false代表关闭该过滤器
* 修改日期: 2019/2/23 14:13
* @param
* @return boolean
* @author taohongchao
* @throws
*/
@Override
public boolean shouldFilter() {
return true;
}
/**
* 方法名: run
* 方法描述: 过滤器内执行的操作, return代表任何Object的值(包括null),都代表继续执行
* 而调用 setSendZuulResponse(false) 表示不再继续执行
* 修改日期: 2019/2/23 14:13
* @param
* @return java.lang.Object
* @author taohongchao
* @throws
*/
@Override
public Object run() throws ZuulException {
System.out.println("经过后台过滤器了");
return null;
}
}
在run方法中, 写了输出语句, “经过后台过滤器了”. 启动 Eureka ,base模块, 网关模块. 调用如下的请求 http://localhost:9011/base/label
控制台打印如下.代表成功经过了后台的过滤器. filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过 滤器类型,具体如下:
pre :可以在请求被路由之前调用,一般使用pre route :在路由请求时候被调用 post :在route和error过滤器之后被调用 error :处理请求时发生错误时被调用
filterOrder :通过int值来定义过滤器的执行顺序 shouldFilter :返回一个boolean类型来判断该过滤器是否要执行,所以通过此函数可 实现过滤器的开关。在上例中,我们直接返回true,所以该过滤器总是生效 run :经过过滤器时的在此方法内写具体逻辑