首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spring Feign转到帖子

使用Spring Feign转到帖子
EN

Stack Overflow用户
提问于 2019-03-30 01:37:29
回答 1查看 763关注 0票数 0

我遇到了一个问题,我的GET请求被更改为POST,因为在Feign客户端中,RequestHeader和PathVariable被解释为请求的主体。

拦截器

代码语言:javascript
复制
public class OpenFeignConfiguration implements RequestInterceptor {
    @Value("${key:}")
    private String key;

    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }

    @Override
    public void apply(RequestTemplate template) {
        template.header("key", key);
    }
}

和假客户端

代码语言:javascript
复制
@FeignClient(name = "feignClient", url = "${client.url}", configuration = OpenFeignConfiguration.class)
public interface FeignClient {
    @GetMapping(value = "/path/?test=({var1} and {var2})")
    public Object test(String body, @PathVariable("var1") String var1, @PathVariable("var2") String var2);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-30 01:37:29

我找到的解决方案是,您必须将Springs Feign合约更改为Feign,这样:

代码语言:javascript
复制
public class OpenFeignConfiguration implements RequestInterceptor {
   @Value("${key:}")
   private String key;

   @Bean
   Logger.Level feignLoggerLevel() {
       return Logger.Level.FULL;
   }

   @Bean
   public Contract feignContract() {
       return new Contract.Default();
   }

   @Override
   public void apply(RequestTemplate template) {
       template.header("key", key);
   }
}

客户端现在必须使用Feign注解:

代码语言:javascript
复制
@FeignClient(name = "feignClient", url = "${client.url}", configuration = OpenFeignConfiguration.class)
public interface FeignClient {
    @RequestLine("GET /path/?test=({var1} and {var2})")
    public Object test(@Param("var1") String originator, @Param("var2") String receiver);
}

希望这能帮助那些和我有同样问题的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55422864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档