quarkus rest客户端参数查询编码

cig3rfwq  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(423)

我有这个quarkus rest api:

@ApplicationScoped
@RegisterRestClient(configKey = "s-api")
@RegisterProvider(LoggingFilter.class)
public interface MyClientAdapter {
   @GET
   @Produces(MediaType.TEXT_PLAIN)
   String search(@QueryParam("lodis") double lodis, 
        @QueryParam("secTcn") String secTcn);

api工作得很好,但是如果我将这个值传递给方法 ussu%os ,rest客户端将其编码为“ussu%25os”:

restClient.search(28322.2, "ussu%os")

因此,端点不返回任何内容。
所以我的问题是如何禁用queryparam sectcn的编码?

zd287kbt

zd287kbt1#

你客户的行为是正确的- % 符号是URI中的保留字符-请参阅rfc3986。所以任何想通过 % 在uri中必须对其进行编码,从而导致 %25 正在发送到服务器。
由该api端点的提供者将查询参数正确解码为其字符串文本值。如果提供者是jax-rs,那么检查 @Encoded 注解,无论传递值是解码还是原始。

相关问题