怎么使用RESTEasy代理客户端发送查询参数图

原学程将引见若何应用RESTEasy署理客户端收送盘问参数图的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么使用RESTEasy代理客户端发送查询参数图 教程 第1张

成绩描写

我正在寻觅1种将包括参数称号以及值的映照传播给Get Web Target的办法。我愿望RESTEasy将我的映照转换为URL盘问参数列表;但是,RESTEasy扔出了1个异常,解释Caused by: javax.ws.rs.ProcessingException: RESTEASY00四五六五: A GET request cannot have a body.
。怎样告知RESTEasy将此映照转换为URL盘问参数?

这是署理交心:

@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
public interface ExampleClient {

 @GET
 @Path("/example/{name}")
 @Produces(MediaType.APPLICATION_JSON)
 Object getObject(@PathParam("name") String name, MultivaluedMap<String, String> multiValueMap);

}

用法以下:

@Controller
public class ExampleController {

  @Inject
  ExampleClient exampleClient; // injected correctly by spring DI

  // this runs inside a spring controller
  public String action(String objectName) {
MultivaluedMap<String, String> params = new MultivaluedHashMap<>();

// in the real code I get the params and values from a DB
params.add("foo", "bar")
params.add("jar", "car")
//.. keep adding

exampleClient.getObject(objectName, params); // throws exception
  }

}

推举谜底

深刻研讨RESTEasy源代码多少个小时后,我发明经由过程交心正文没法做到这1面。简而言之,RESTEasy从org.jboss.resteasy.client.jaxrs.internal.proxy.processors.ProcessorFactory创立1个称为‘处置器’的器械去将正文映照到目的URI。

但是,经由过程创立1个ClientRequestFilter去处理这个成绩真的很简略,它从要求主体(固然是在履行要求之前)夺取Map,并将它们搁在URI盘问参数中。检讨以下代码:

挑选器:

@Provider
@Component // because I'm using spring boot
public class GetMessageBodyFilter implements ClientRequestFilter {
 @Override
 public void filter(ClientRequestContext requestContext) throws IOException {
  if (requestContext.getEntity() instanceof Map && requestContext.getMethod().equals(HttpMethod.GET)) {
UriBuilder uriBuilder = UriBuilder.fromUri(requestContext.getUri());
Map allParam = (Map)requestContext.getEntity();
for (Object key : allParam.keySet()) {
 uriBuilder.queryParam(key.toString(), allParam.get(key));
}
requestContext.setUri(uriBuilder.build());
requestContext.setEntity(null);
  }
 }
}

PS:为简略起睹,我应用了Map而没有是MultivaluedMap

佳了闭于怎样应用RESTEasy署理客户端收送盘问参数图的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。