如何解决在 Spring Webflux 中是否有获取当前 ServerHttpRequest 的静态方法?
类似于Is there a static way to get the current HttpServletRequest in Spring,我想通过静态方法在我的spring webflux项目中获取ServerHttpRequest,所以我不需要从控制器一路跨多个层传递它。 实现这一目标的最佳方法是什么?
解决方法
以下是获取当前请求上下文的静态方法:
注意:如果 getServerHttpRequest() 被阻止,那么只有到那时设置的键才可用。
public static Mono<ServerHttpRequest> getServerHttpRequest() {
return Mono.deferContextual(Mono::just)
.map(contextView -> contextView.get(ServerWebExchange.class).getRequest());
}
另外,它可以通过:
mono.subscriberContext // deprecated
最近,Springflux 引入了“transformDeferredContextual”,这是一种更简洁的方法:
mono.transformDeferredContextual( (orginialMono,context ) -> {
... do something
return orginialMono; // later this will be flatmapped
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。