# 自定义 URL 限流返回值(1.7.0)

首先url必须是顶级,即形如/sentinel,/echo,如果为/echo/test,在sentinel-bashboard中不显示

第一步: 手动添加如下依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-web-servlet</artifactId>
    <version>1.7.0</version>
</dependency>

目前不支持 1.7.1

sentinel-web-servlet没有包含在spring-cloud-starter-alibaba-sentinel

第二步: 实现 UrlBlockHandler 接口

public class CustomUrlBlockHandler implements UrlBlockHandler {
    @Override
    public void blocked(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws IOException {
        httpServletResponse.getWriter().write("url blocked");
    }
}

第三步: 将自定义的CustomerUrlBlockHandler加入到应用中

@Configuration
public class SentinelConfig{
  @PostConstruct
  public void config(){
    WebCallbakManager.setUrlBlockHandler(new CustomUrlBlockHander());
  }
}

此时在sentinel-dashboard中添加如下规则

url-limiter

访问http://localhost:9089/url可以得到自定义限流的结果

> curl http://localhost:9980/url
url blocked

注意版本

spring-cloud-starter-alibaba-sentinel 为 2.1.1.release

sentinel-web-servlet 为 1.7.0

升级版本后经测试不生效

# 1.7.1

实现BlockExceptionHandler接口