【发布时间】:2019-08-03 11:31:05
【问题描述】:
目前我正在将我的一项微服务从 spring boot 1.x 迁移到 spring boot 2。考虑有两个服务 A 和 B。服务 A 调用服务 B 的其余端点。在查询中,服务 A 正在传递一个字母数字字符串,该字符串还包含 (+) 字符(并不总是因为它是随机生成的字符串)。服务 B 将此字符串与存储在 db 中的字符串进行比较并返回响应。
我观察到 1.x 版本的 URL 得到了正确编码。前任。如果我通过 (a+b),它会被编码为 a%2Bb,而在服务 B 中,它会被解码为 (a+b)。但是,在 2.x 版本中,它仅被编码为 (a+b),因此在服务 B 中它被解码为 (a b) [+ 被解码为空白]
我正在使用 UriComponentBuilder 来构建 URI 和 encode() 方法来对 URI 进行编码。在调试时,我发现 URL 中允许使用 + 字符,这就是它没有被编码的原因。
我的问题是 - 有没有办法改变这种行为,以便我得到 + 作为 %2B 。或者,如果我做错了什么,请指出我正确的地方。 如果需要,我也可以分享代码。
【问题讨论】:
标签: spring spring-boot url-encoding spring-rest spring-web