2.12.3. RESTEasy Interceptors
2.12.3.1. 拦截 JAX-RS 调用 复制链接链接已复制到粘贴板!
RESTEasy 可以拦截 JAX-RS 调用,并通过称为拦截器的类似于侦听器的对象进行路由。
虽然过滤器修改请求或响应标头,而拦截器会处理消息正文。拦截器在与其对应的读取器或写入器相同的调用堆栈中执行。ReaderInterceptors 围绕执行 MessageBodyReaders 打包.WriterInterceptors 围绕执行 MessageBodyWriters 打包。它们可用于实施特定的内容编码。它们可用于生成数字签名,或者在托管之前或之后发布或预处理 Java 对象模型。
ReaderInterceptors 和 WriterInterceptors 可用于服务器或客户端。它们标有 @Provider,以及 @ServerInterceptor 或 @ClientInterceptor,以便 RESTEasy 知道是否将它们添加到拦截器列表中。
这些拦截器围绕调用 MessageBodyReader.readFrom()或 MessageBodyWriter.writeTo()进行 打包。它们可用于嵌套 输出 或 输入 流。
示例:Interceptor
拦截器和 MessageBodyReader 或 Writer 在一个大型 Java 调用堆栈中调用。ReaderInterceptorContext.proceed() 或 WriterInterceptorContext.proceed() 被调用来进入下一个拦截器;如果没有要调用的拦截器,则调用拦截 器( ) 或 writeTo() 方法 。此打包允许在对象到达 Reader 或 Writer 之前修改对象,然后在 continue () 返回后进行清理。
以下示例是服务器端拦截器,它为响应添加一个标头值。