spring - Feign Client + Eureka POST 请求体

标签 spring rest microservices netflix-eureka netflix-feign

我正在尝试使用 Feign 和 Eureka 将发布请求从服务器 A 转发到服务器 B。两个服务器都被 Eureka 成功发现。

这有效:

@Feignclient
public interface MyFeignClient {
    @RequestMapping(value = "test", = RequestMethod.POST, consumes = "application/json")
    ResponseEntity<String> theActualMethod(
            HttpServletRequest request,
            @RequestHeader("firstHeader") String header1,
            @RequestHeader("secondHeader") byte[] header2);
}

但是,当我将第二个参数更改为 @RequestBody 以读取 POST 请求内容时,出现异常:
java.lang.IllegalStateException: Method has too many Body parameters: public abstract org.springframework.http.ResponseEntity MyFeignClient.theActualMethod(javax.servlet.http.HttpServletRequest,java.lang.String,byte[])

最佳答案

问题是 Feign 接口(interface)中的方法不能有多个“通用”参数。您可以拥有任意数量的 header 参数,但不能超过主体。由于@RequestBody 不做任何事情,因此它不被视为 header ,而是除了 HttpServletRequest 请求变量之外的另一个变量。

所以我不得不将我的业务逻辑更改为只有一个参数。

关于spring - Feign Client + Eureka POST 请求体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35264620/

相关文章:

javascript - 来自 javascript 的 fetch 调用无法访问 java REST 服务

Kubernetes:单 POD 多容器,或多 Pod 单容器

java - 来自 vividsolutions JTS 的几何在创建 JSON 时失败

rest - 如何停止当前正在运行/正在执行的构建?

web-services - 跨微服务查询/分页

terminology - 分布式计算、微服务和并行计算有什么区别

java - JPA+ Spring : Mapping a foreign key column to a ID based on the value received before persisting the entity

java - 事务结束时自动刷新的异常

java - 使用 Spring Batch 将文件中的日期解析为 LocalDateTime

Spring 数据 JPA Repository @autowired 给出 null