@POST@Consumes(MediaType.APPliCATION_JsON)@Produces(MediaType.APPliCATION_JsON)@Path("LogIn")public Response logIn(@Context httpServletRequest request,Parameters requestParameters) {...}
谢谢!
解决方法 拦截器它可以通过拦截器实现.
拦截器旨在通过 *** 纵实体输入/输出流来 *** 纵实体.拦截器有两种,ReaderInterceptor
和WriterInterceptor
.
读取器拦截器用于 *** 纵入站实体流.这些是来自“电线”的流.因此,使用读取器拦截器,您可以在服务器端 *** 纵请求实体流. Writer拦截器用于将实体写入“wire”的情况,服务器在写出响应实体时表示
以下拦截器实现了ReaderInterceptor
接口,允许您在服务器端修改请求的实体:
@ProvIDerpublic class CustomreaderInterceptor implements ReaderInterceptor { @OverrIDe public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException,WebApplicationException { inputStream stream = context.getinputStream(); // Manipulate the http entity using the inputStream context.setinputStream(stream); return context.proceed(); }}
请注意,上面的拦截器是全局的,也就是说,它将针对所有资源方法执行.
使用Jackson时,您的ReaderInterceptor#aroundReadFrom(ReaderInterceptorContext)
方法实现可能如下:
// Create a Jackson ObjectMapper instance (it can be injected instead)ObjectMapper mapper = new ObjectMapper();// Parse the requested entity into a JsON treeJsonNode tree = mapper.readTree(context.getinputStream());// Add a property to the JsON((ObjectNode) tree).put("fIEld","value");// Set the input stream containing the manipulated JsONcontext.setinputStream(new ByteArrayinputStream(mapper.writeValueAsBytes(tree)));// Proceed to the next interceptor in the chaincontext.proceed();
名称绑定
要仅为某些手工挑选的资源方法执行拦截器,可以使用名称绑定.
名称绑定是一种概念,它允许向JAX-RS运行时说明仅针对特定资源方法执行特定过滤器或拦截器.当过滤器或拦截器仅限于特定的资源方法时,我们说它是名称绑定的.
可以使用@NameBinding
批注将过滤器分配给资源方法.注释用作应用于提供者和资源方法的其他用户实现的注释的元注释.
名称绑定注释可以定义如下(注释的名称取决于您):
@nameBinding@Retention(RUNTIME)@Target({TYPE,METHOD})public @interface CustomizeResponse { }
将上面定义的注释放在拦截器类上:
@ProvIDer@CustomizeResponsepublic class CustomreaderInterceptor implements ReaderInterceptor { ...}
要将拦截器分配给资源方法,请将以上定义的注释放在资源方法上:
@GET@CustomizeResponse@Produces(MediaType.APPliCATION_JsON)public Response myMethod() { ...}
名称绑定也可以应用于资源类.这意味着将为该资源类的所有资源方法执行拦截器:
@Path("/foo")@CustomizeResponsepublic class MyResource() { ...}
请注意,始终执行全局过滤器和拦截器,因此即使对于具有任何名称绑定注释的资源方法也是如此.
其他资源
有关拦截器的更多详细信息,请查看Jersey documentation.
总结以上是内存溢出为你收集整理的拦截JAX-RS Web服务请求以添加JSON字段全部内容,希望文章能够帮你解决拦截JAX-RS Web服务请求以添加JSON字段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)