如何编写其服务器端终结点接受一组字符串作为Form Param的Open feign客户端实现?

将此代码段视为rest服务的服务器端入口点:

@Path("/publish")
@POST
@Consumes(MediaType.URL_FORM_ENCODED)
@Produces(MediaType.APPLICATION_JSON)
public javax.ws.rs.core.Response addBook(@QueryParam("bookId") String bookId,@FormParam("publisher") String publisher,@FormParam("authors") Set<String> authors){
//implementation logic
}

我需要将此其余服务用作客户端,并且我无法为此服务编写伪装的客户端实现以正确发送一组作者。我知道Jax-Rs的实现很容易,但是我特别想使用伴随jax-rs注释的假装来实现。我最好能做到的是以下两种实现: 假设我已使用适当的URL和编码器正确配置了Feign客户端构建器。这是伪装的接口,我在这里称呼它。我正在将Json响应解码为JAVA Map

客户端实现1:直接将一组字符串传递给伪装方法

@Path("/publish")
@POST
@Consumes(MediaType.URL_FORM_ENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Map addBook(@QueryParam("bookId") String bookId,@FormParam("authors") Set<String> authors);

结果:服务器端的Jackson Json Parse异常

客户端实施2:

@Path("/publish")
@POST
@Consumes(MediaType.URL_FORM_ENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Map addBook(@QueryParam("bookId") String bookId,@FormParam("authors") String author1,@FormParam("authors") String author2);

结果:200确定,但是响应对象仅包含author2的author,即author1已被author 2取代。

因此,我需要从伪装客户端调用此服务器端调用(不对服务器端方法签名进行任何更改),以便能够传递一组作者,并且以类似的方式使用它。 是否可以对Feign使用Jax-rs注释而不是基于feign的注释来实现此结果?同样,如果多值映射可以解决问题,那也可以。

ysh851216 回答:如何编写其服务器端终结点接受一组字符串作为Form Param的Open feign客户端实现?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3085818.html

大家都在问