有一个需求,在拦截器中将一个List中的URL(Ant风格)与接口的请求路径逐个匹配,有任意匹配则放行。 贴个伪代码
import org.springframework.util.AntPathMatcher;
import org.springframework.util.PathMatcher;
private final PathMatcher pathMatcher = new AntPathMatcher();
if (pathMatcher.match(listUrl, requestURI)) {
return true;
}
用于匹配的规则有几个/user/{id}
、/user/update
,/user/delete/{id}
,根据Restful风格设计的几个接口,依次为:查看用户、修改用户、删除用户。
原本以为到此就完工了,实际跑的时候发现用/user/{id}
去匹配/user/update
也是可以通过的,这样它匹配的范围就有点大了。
不过我们的用户ID是全数字,所以修改了一下,改成/user/{id:[\d]+}
让其仅匹配数字即可,如果ID是字符串的不知道有什么比较好的方案,或许把URL设计成/user/get/{id}
?有其他方案欢迎交流