我正在尝试使用 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/