【发布时间】:2011-05-20 11:34:54
【问题描述】:
我已经使用 Jersey 一年的大部分时间了,但偶然发现了一个我无法找到答案的问题:如何拦截(或挂钩)Jersey 请求生命周期?
理想情况下,我可以在容器接受来自网络的请求和调用我的处理程序方法之间执行一些自定义过滤/验证/拒绝。如果有一种简单的方法可以通过子路径过滤拦截器(例如,有一个拦截器用于 / 下的任何内容,另一个拦截器用于 /user/ 下的任何内容,等等)。
谢谢!
编辑:为了更清楚一点,这里的一般想法是能够编写一些代码,这些代码将针对许多 API 调用运行,而不必从每个处理程序方法中显式调用该代码。这将减少额外的代码并消除传递请求上下文的需要。
【问题讨论】:
-
你想要什么样的过滤、验证、拒绝?例如,您可以创建自己的 MessageBodyWriter/Reader 来处理验证。或者你可以在构造函数中设置@Context,用于自定义HTTP头解析或URI解析。
-
此功能的大多数应用都与安全有关。例如,我的(非泽西岛)Web 应用程序将为泽西岛的某些 AJAX 调用(都在同一路径下)生成一次性随机数。拦截器将负责检查这个 nonce 的有效性。
-
@Marc 你能告诉更多关于“或者你可以在构造函数中设置 @Context 以进行自定义 HTTP 标头解析或 URI 解析”部分吗?
标签: java api jax-ws jersey jax-rs