为什么在 Spring 云 Zuul 中需要 FormBodyWrapperFilter?

Why is FormBodyWrapperFilter necessary in Spring cloud Zuul?

在一个简单的 @EnableZuulProxy 应用程序中,内容类型 application/x-www-form-urlencodedmultipart/form-data 的请求被 FormBodyWrapperFilter 包装在 FormBodyRequestWrapper 中。这将解码内容并为后端重新编码。

但是,据我所知,在启用服务发现的路由中,其他内容类型(比如 application/json)的请求将 InputStream 直接代理到通过 RibbonCommandContext

例如,在 Apache HttpClient 中,输入流将被包装在 RibbonApacheHttpRequest 中的 BasicHttpEntity 中。

为什么这是必要的?我们不能以同样的方式处理所有请求吗?

原始问题请参阅 https://github.com/spring-cloud/spring-cloud-netflix/issues/109

zuul 请求包装器缓冲请求,需要为代理添加回来。这也是spring云网关建成的原因之一,因为它没有这些问题。