前言
一个Restful接口,后面跟着一个数字参数。导致每次的请求url都不一样,例如:/shares/1 ,/shares/2 ,这时候的规则就不好针对这个Api设定。
Sentinel RESTful URL支持
一、实现接口UrlCleaner
import com.alibaba.csp.sentinel.adapter.servlet.callback.UrlCleaner;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.math.NumberUtils;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
@Slf4j
public class MyUrlClearner implements
UrlCleaner {
@Override
public String clean(String originUrl) {
//总之就是要把Restful的URL统一的 返回一个
String[] split = originUrl.split("/");
return Arrays.stream(split).map(string-> {
if(NumberUtils.isNumber(string)){
return "{number}";
}
return string;
}).reduce((a,b)->a+"/"+b).orElse("");
}
}
二. 测试
- 访问http://localhost:8081/shares/1
- sentinelDashboard出现
针对与这个restful接口做规则即可。