Spring Cloud Zuul自定义过滤器实战

一 代码位置

https://github.com/cakin24/spring-cloud-code/tree/master/ch8-1

二 测试

1 启动eureka-server

2 启动client-a

3 启动zuul-server

4 访问http://localhost:5555/client/mul?a=100&b=200

从结果可知:FirstPreFilter、SecondPreFilter、ThirdPreFilter、GroovyFilter、PostFilter过滤器依次生效。

5 访问http://localhost:5555/client/mul?b=200

从结果可知:FirstPreFilter、SecondPreFilter、GroovyFilter、PostFilter过滤器依次生效。

6 访问http://localhost:5555/client/mul?a=200

从结果可知:FirstPreFilter、SecondPreFilter、ThirdPreFilter、GroovyFilter、PostFilter过滤器依次生效。

7 修改GroovyFilter.groovy代码如下

import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.*;


import javax.servlet.http.HttpServletRequest


import com.netflix.zuul.ZuulFilter
import com.netflix.zuul.context.RequestContext
import com.netflix.zuul.exception.ZuulException


class GroovyFilter extends ZuulFilter {


    @Override
    public String filterType() {
        return PRE_TYPE
    }
    
    @Override
    public int filterOrder() {
        return 10
    }
    
    @Override
    public boolean shouldFilter() {
        return true
    }


    @Override
    public Object run() throws ZuulException {
        HttpServletRequest request = RequestContext.currentContext.request as HttpServletRequest
        Iterator headerIt = request.getHeaderNames().iterator()
        while (headerIt.hasNext()) {
            String name = (String) headerIt.next()
            String value = request.getHeader(name)
            println("header: " + name + ":" + value)
        }
        println("This is Groovy Filter!good Groovy Filter")
        return null
    }
}

再次访问http://localhost:5555/client/mul?a=100&b=200

从结果可知,修改GroovyFilter后,无须重写编译,过滤器也能生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值