Java ResponseEntity在两次Web服务调用之间丢失了主体

Java ResponseEntity在两次Web服务调用之间丢失了主体,java,spring,spring-boot,spring-cloud-feign,Java,Spring,Spring Boot,Spring Cloud Feign,我有一个Web服务,它调用另一个WS并从第二个WS返回响应。看起来是这样的: // MyController public ResponseEntity<Foo> requestFooController(@RequestBody @Valid Bar request) { return this.myService.requestFooService(request); } //MyService ResponseEntity<Foo> requestFoo

我有一个Web服务,它调用另一个WS并从第二个WS返回响应。看起来是这样的:

// MyController
public ResponseEntity<Foo> requestFooController(@RequestBody @Valid Bar request) {
     return this.myService.requestFooService(request);
}

//MyService
ResponseEntity<Foo> requestFooService(Bar request) {
  Buzz improvedRequest = ...
  return this.secondWS.secondRequestFoo(improvedRequest);
}
现在通过邮递员,我得到了预期的尸体。然而,我不理解这种行为。我想这可能是因为身体是一种可以阅读一次或类似内容的流。但是通过阅读源代码,我看不到任何东西可以解释这种行为

我使用的是Netflix堆栈(因此两个WS之间的HTTP调用是通过
Feign
客户端进行的)

知道我为什么会得到这个结果吗

编辑: 有关我的任务的更多详细信息: SpringBoot 1.5.3.1版本
Faign 2.0.5

存在一个导致HTTP多部分POST的命名正文失败的错误。这种情况的症状是,您使用主体发出POST请求,而Spring Boot无法将其与endoint匹配。我看到的例外是:

2019-01-23 15:22:45.046 DEBUG 1639 --- [io-8080-exec-10] .w.s.m.m.a.ServletInvocableHandlerMethod : Failed to resolve argument 3 of type 'org.springframework.web.multipart.MultipartFile'
    org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present
Zuul正在缓存请求以重试多次。在此过程中,它无法保留二进制体的命名字段。如果你在请求前加上zuul,你可能会发现它是有效的。因此,不要在路径中使用zuul:

这将有效地避免保存请求和重试机制


.

有一个错误导致HTTP多部分POST的命名正文失败。这种情况的症状是,您使用主体发出POST请求,而Spring Boot无法将其与endoint匹配。我看到的例外是:

2019-01-23 15:22:45.046 DEBUG 1639 --- [io-8080-exec-10] .w.s.m.m.a.ServletInvocableHandlerMethod : Failed to resolve argument 3 of type 'org.springframework.web.multipart.MultipartFile'
    org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present
Zuul正在缓存请求以重试多次。在此过程中,它无法保留二进制体的命名字段。如果你在请求前加上zuul,你可能会发现它是有效的。因此,不要在路径中使用zuul:

这将有效地避免保存请求和重试机制


.

您使用的是哪个版本的spring boot?有一个版本特定的bug导致多部分主体的名称丢失,然后与参数不匹配。你用的是假的,但你在Netflix堆栈中用的是eureka和zuul吗?是的,我用的是zuul和eureka。我可以试着绕过zuul,看看会发生什么。你使用的是哪个版本的spring boot?有一个版本特定的bug导致多部分主体的名称丢失,然后与参数不匹配。你用的是假的,但你在Netflix堆栈中用的是eureka和zuul吗?是的,我用的是zuul和eureka。我可以试着绕过zuul,看看会发生什么。我正在升级到spring boot 2.1.3,以解决生产中的这个问题。谢谢你提供的信息!我将检查调试日志中是否存在类似问题。我想这将是推动升级的另一个理由:)我正在升级到spring boot 2.1.3以解决生产中的这个问题。谢谢你提供的信息!我将检查调试日志中是否存在类似问题。我想这将是推动升级的另一个理由:)