我正在使用javax.ws.rs实现一个REST API。实现的目标是尽可能安全,因此每个输入都应该经过验证。
对于输入验证,我实现了一个实现HttpServletRequest的公共类ValidatingHttpRequest。
我可以识别出11个甚至被调用的方法,所有其他的现在都抛出了UnsupportedOperationException。但是,其中一些方法处理的显然是REST框架使用的内容。例如,我的代码不关心头部,但调用了getHeaders。有了大量的逆向工程,我将能够弄清楚使用了哪些头文件,并且应该进行验证,当然我也可以进行验证。可能会引入非最优行为,也可能会出现一些bug。HTTP请求也有一些类似的方面。
但是以前没有人这样做过,可能有人真正知道REST框架是如何工作的?或者这是不必要的,因为框架本身是不能被愚弄的?
因此,我正在寻找一个完全验证的HttpServletRequest实现,或者一个推理为什么在这种情况下它是不必要的。当然,我将使用实现验证请求正文和参数。
发布于 2017-08-10 17:36:47
我正在使用
javax.ws.rs实现一个REST API。..。对于输入验证,我实现了一个实现HttpServletRequest的公共类ValidatingHttpRequest。
您错过了JAX-RS的全部要点。在JAX-RS中,您需要处理带注释的资源类和方法,因此不需要编写“低级”Servlets。
我正在寻找一个完全验证的
HttpServletRequest实现,或者在这种情况下为什么它是不必要的推理。
您肯定不想(也不需要)出于验证目的编写Servlet。
Jersey、RESTEasy和Apache CXF等JAX-RS实现支持Bean Validation,这是一种基于注释的应用程序接口,用于验证Java。你可以验证几乎所有你需要的东西,包括请求头,参数和实体。
查看JAX-RS specification的第7章,它描述了验证是如何工作的。但是,要将Bean验证与JAX-RS实现集成在一起,您需要查看特定于供应商的文档:
https://stackoverflow.com/questions/45609699
复制相似问题