【问题标题】:Force feign to use a specific content-type强制 feign 使用特定的内容类型
【发布时间】:2022-01-11 13:18:50
【问题描述】:

我正在使用 Feign 在远程 Java 接口上进行 REST 调用。 接口定义如下:

@Produces({"text/xml", "application/json"})

由于JAXRSContract 简单发送data.template().header("Accept", serverProduces); 服务器选择以xml 有效负载进行应答。

在这种情况下,我有什么办法可以强制 Feign 请求 `JSON 有效负载?

【问题讨论】:

    标签: java spring-cloud-feign feign


    【解决方案1】:

    您可以使用拦截器覆盖标头:

    Feign.builder().setInterceptor(requestTemplate -> {
            Map<String, Collection<String>> map = new HashMap<>(requestTemplate.headers());
            map.put("Accept", Collections.singleton("application/json"));
            requestTemplate.headers(null);
            requestTemplate.headers(map);
    });
    

    requestTemplate.headers(map) 方法看起来设计得很糟糕,如果你传递了一个有效的映射,它的值就会被添加到内部的头部映射中;如果您通过 null 而不是重置内部标题映射。这就是为什么你需要调用它两次。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 2018-11-29
      • 1970-01-01
      • 2021-06-16
      相关资源
      最近更新 更多