我们有一些REST端点(例如/ getalleuropeancars或/ getalljapanesecars或/ getallamericancars)。这些端点都是GET 唯一。
现在,每个带注释的端点类都有自己的代码,用于检查未授权的方法(除了GET之外的所有方法)。我们希望一个班级处理所有未经授权的方法;你知道,代码重用以及所有这些。
过滤器是否能够区分" GET / getalleuropeancars"和" POST / getalleuropeancars"和" DELETE / getalleuropeancars"并重定向到适当的地方?看看servlet过滤器,它们似乎只能检测不同的URL路径,而不是不同的HTTP方法。
<url-pattern>/getalleuropeancars</url-pattern>
<url-pattern>/getalljapanesecars</url-pattern>
<url-pattern>/getallamericancars</url-pattern>
那么,servlet过滤器是我们需要的吗?
答案 0 :(得分:0)
是的,Servlet过滤器可以做到这一点。这里有两件事,一件是将Filter映射到您希望它过滤的所有路径(url-patterns)。第二是让它过滤掉非GET方法。以下是过滤掉非GET请求的过滤器的代码。 Jus使用您自己的代码填写//return error
以返回错误。
public class OnlyGetsFilter implements Filter {
@Override
public void doFilter(ServletRequest sr, ServletResponse sr1, FilterChain fc) throws IOException, ServletException {
HttpServletRequest hsr = (HttpServletRequest) sr;
if (!"GET".equals(hsr.getMethod())) {
//return error
} else {
fc.doFilter(sr, sr1);
}
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig fc) throws ServletException {
}
}