如何过滤JAX-RS中具有无效参数的请求?

如何过滤JAX-RS中具有无效参数的请求?,第1张

如何过滤JAX-RS中具有无效参数请求

您可以检查使用ContainerRequestFilter并将传递的参数与定义的参数进行比较:

@Providerpublic class RequestParamFilter implements ContainerRequestFilter {    @Context    private ResourceInfo resourceInfo;    @Context    private HttpServletRequest servletRequest;    @Override    public void filter(ContainerRequestContext requestContext) throws IOException {        Set<String> validParams = new HashSet<String>();        Method method = resourceInfo.getResourceMethod();        for (Annotation[] annos : method.getParameterAnnotations()) { for (Annotation anno : annos) {     if (anno instanceof QueryParam) {         validParams.add(((QueryParam) anno).value());     } }        }        for (String param : servletRequest.getParameterMap().keySet()) { if (!validParams.contains(param)) {     requestContext.abortWith(Response.status(Status.BAD_REQUEST).build()); }        }    }}

不要忘记ServletRequest#getParameterMap返回一个Map,该Map包含查询字符串参数和在请求正文中传递的参数。因此,也许您需要自己解析查询字符串。

注意:这不会加快您的应用程序的速度。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5430445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存