gpt4 book ai didi

java - 如何使用 javax.ws.rs 执行输入验证?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:12 27 4
gpt4 key购买 nike

我正在使用 javax.ws.rs 实现 REST API。实现目标是尽可能安全,因此应对每个输入进行验证。

对于输入验证,我正在实现一个实现了 HttpServletRequest 的公共(public)类 ValidatingHttpRequest

我可以识别出 11 个甚至被调用的方法,所有其他方法现在都抛出 UnsupportedOperationException。然而,其中一些方法处理的事情显然是由 REST 框架使用的。例如,我的代码不关心 header ,但会调用 getHeaders。通过大量的逆向工程,我将能够弄清楚使用了哪些 header 并且应该对其进行验证,当然我可以进行验证。可能会引入非最佳行为和一些错误。 HTTP 请求也有一些类似的方面。

但是以前没有人这样做过,可能有人真正了解 REST 框架的工作原理?还是没有必要,因为框架本身是不会被愚弄的?

所以我正在寻找一个完全验证的 HttpServletRequest 实现,或者在这种情况下不需要它的原因。当然,我会使用实现来验证请求正文和参数。

最佳答案

I am implementing a REST API using javax.ws.rs. [...] For input validation, I am implementing a public class ValidatingHttpRequest that implements HttpServletRequest.

您错过了 JAX-RS 的全部要点。在 JAX-RS 中,您处理带注释的资源类和方法,因此您不需要编写“低级别”Servlet。

I am looking for a fully validating HttpServletRequest implementation, or a reasoning why it is unnecessary in this case.

您绝对不希望(并且不需要)编写用于验证目的的 Servlet。

JAX-RS 实现,例如 Jersey、RESTEasy 和 Apache CXF 支持 Bean Validation ,一个基于注解的 API 来验证 Java Bean。您几乎可以验证所需的一切,包括请求 header 、参数和实体。

查看 JAX-RS specification 的第 7 章,它描述了验证是如何工作的。但是,要将 Bean Validation 与 JAX-RS 实现集成,您需要查看特定于供应商的文档:

关于java - 如何使用 javax.ws.rs 执行输入验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45609699/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com