其他分享
首页 > 其他分享> > spring – Feign Client Eureka POST请求正文

spring – Feign Client Eureka POST请求正文

作者:互联网

我正在尝试使用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接口中的方法不能有多个“通用”参数.您可以拥有任意数量的标头参数,但不能超过一个作为正文.由于@RequestBody没有做任何事情,因此除了HttpServletRequest请求变量之外,它不被视为标题而是另一个变量.

所以我不得不改变我的业务逻辑只有一个参数.

标签:rest,spring,microservices,netflix-eureka,netflix-feign
来源: https://codeday.me/bug/20190516/1116061.html