Jan*_*tze 5 spring spring-webflux spring-filter
我正在尝试在spring webflux中进行应用。但是我在文档中找不到很多东西。
我有一个Webfilter,我想在响应周围添加包装器。示例:
在以下情况下回复:
{
"id": 1,
"name": "asdf"
}
Run Code Online (Sandbox Code Playgroud)
之后的回应:
{
"status": "success",
"data": {
"id": 1,
"name": "asdf"
}
}
Run Code Online (Sandbox Code Playgroud)
这是当前的WebFilter:
@Component
public class ResponseWrapperFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) {
// Add wrapper to the response content...
return webFilterChain.filter(serverWebExchange);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我找不到获取或编辑响应正文的方法。
如何更改中的响应输出WebFilter?
正如 javadoc 中所述,WebFilter它是针对与应用程序无关的横切问题而设计的。WebFilters通常会改变请求标头、向交换添加属性或完全处理响应,而不委托给链的其余部分。
我认为您想要实现的目标并不容易实现,甚至不应该以这种方式实现。在原始交换级别,您正在处理 a Flux<DataBuffer>,它是随机分成字节组的响应正文。
您可以以某种方式将响应包装在过滤器中,并用于将Flux.concat数据添加到处理程序编写的实际响应中。但是关于编码、无限流等有很多问题。
也许这是一个应该在该级别实现的问题Encoder,因为您可以将该行为限制为特定的媒体类型。
| 归档时间: |
|
| 查看次数: |
1028 次 |
| 最近记录: |