为什么在 Spring 云 Zuul 中需要 FormBodyWrapperFilter?
Why is FormBodyWrapperFilter necessary in Spring cloud Zuul?
在一个简单的 @EnableZuulProxy
应用程序中,内容类型 application/x-www-form-urlencoded
或 multipart/form-data
的请求被 FormBodyWrapperFilter
包装在 FormBodyRequestWrapper
中。这将解码内容并为后端重新编码。
但是,据我所知,在启用服务发现的路由中,其他内容类型(比如 application/json
)的请求将 InputStream
直接代理到通过 RibbonCommandContext
。
例如,在 Apache HttpClient
中,输入流将被包装在 RibbonApacheHttpRequest
中的 BasicHttpEntity
中。
为什么这是必要的?我们不能以同样的方式处理所有请求吗?
原始问题请参阅 https://github.com/spring-cloud/spring-cloud-netflix/issues/109。
zuul 请求包装器缓冲请求,需要为代理添加回来。这也是spring云网关建成的原因之一,因为它没有这些问题。
在一个简单的 @EnableZuulProxy
应用程序中,内容类型 application/x-www-form-urlencoded
或 multipart/form-data
的请求被 FormBodyWrapperFilter
包装在 FormBodyRequestWrapper
中。这将解码内容并为后端重新编码。
但是,据我所知,在启用服务发现的路由中,其他内容类型(比如 application/json
)的请求将 InputStream
直接代理到通过 RibbonCommandContext
。
例如,在 Apache HttpClient
中,输入流将被包装在 RibbonApacheHttpRequest
中的 BasicHttpEntity
中。
为什么这是必要的?我们不能以同样的方式处理所有请求吗?
原始问题请参阅 https://github.com/spring-cloud/spring-cloud-netflix/issues/109。
zuul 请求包装器缓冲请求,需要为代理添加回来。这也是spring云网关建成的原因之一,因为它没有这些问题。