我有以下 Feign 客户端:
public interface MyServiceClient {
@RequestMapping(method = RequestMethod.GET, value = "/item/{itemKey}")
Item getItem (@PathVariable("itemKey") String itemKey);
}
项目可以包含特殊字符,如 :
或 ::
哪些正在被编码。请求 URL 变成这样:
https://myservice.com/item/a%3Ab%3A%3Ac
而不是:
https://myservice.com/item/a:b::c
谁能帮助我了解我们如何解决这个问题?
最佳答案
OpenFeign 有一个问题跟踪:
估计会由
spring-cloud-feign
实现一旦完成。同时,我对这个问题的解决方法是创建一个
RequestInterceptor
并替换 %3A
与 :
public class MyRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
template.uri(template.path().replaceAll("%3A", ":"));
}
}
并使用此 requestInterceptor
建立您的 feignClient
在 feignConfig
:@Bean
public Feign.Builder tcsClientBuilder() {
return Feign.builder().requestInterceptor(new MyRequestInterceptor());
}
关于java - 禁用 PathVariables 的假编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830167/