🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
PRE ``` 请求路由之前调用,可利用这种过滤器实现身份验证,在集群中选择请求的微服务、记录调试信息等 ``` ROUTING ``` 将请求路由到微服务,这种过滤器用于构建发送给微服务的请求,并使用Apache HttpCLient或Netfilx Ribbon请求微服务 ``` POST ``` 路由到微服务以后执行,这种过滤器用来响应添加标准的Httpheader, 收集统计信息和指标,将响应从微服务发送给客户端 ``` ERROR ``` 发生错误时执行该过滤器 ``` 自定义过滤器类型 ``` @Component public class MyFilter extends ZuulFilter { //返回过滤器的类型,有pre, route, post, error等几种取值 @Override public String filterType() { return "pre"; } //返回一个int来指定过滤器的执行顺序,不同的过滤器允许返回相同的数字 @Override public int filterOrder() { return 0; } //返回一个boolean来判断过滤器是否要执行,true表示执行,false表示不执行 @Override public boolean shouldFilter() { return true; } // 过滤器的具体逻辑 @Override public Object run() throws ZuulException { RequestContext currentContext = RequestContext.getCurrentContext(); HttpServletRequest request = currentContext.getRequest(); String token = request.getParameter("token"); if (token == null){ currentContext.setSendZuulResponse(false); currentContext.setResponseStatusCode(401); try { currentContext.getResponse().getWriter().write("token is empty"); } catch (IOException e) { return null; } } return null; } } ```