例如,假设我有一个WebFilter,它可以编写一些上下文
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
return chain.filter(exchange)
.contextWrite(Context.of("my-context", "foobar"));
}
下游,我的控制器这样做
@GetMapping(path = "test")
public Mono<String> test() throws Exception {
final Mono<ContextView> contextMono = Mono.deferContextual(Mono::just);
return contextMono.flatMap(ctx -> Mono.just(ctx.get("my-context")));
}
以上各项都很好。
如果我想从controller方法返回一个值呢?我尝试使用RxJava3Adapter。monoToSingle()
但它会破坏反应器链。
@GetMapping(path = "test")
public Single<String> test() throws Exception {
final Mono<ContextView> contextMono = Mono.deferContextual(Mono::just);
return RxJava3Adapter.monoToSingle(
contextMono.flatMap(ctx -> Mono.just(ctx.get("my-context"))));
}
我的猜测是,因为我不返回Mono,所以RxJava3Adapter中没有订阅此ContextMono。这是正确的解释吗?
有什么方法可以在传入上下文的同时返回单个?
订阅本身工作正常。问题在于,上下文
是反应器特有的特性,不属于反应流标准的一部分。因此,当您将Mono
转换为Single
时,上下文将丢失。
在您附加的代码中,您只需省略Rx部分即可使其工作,但我认为您的实际用例可能更复杂。一个好的方法是尽早将Rx代码转换为Reactor(例如,当您调用返回Rx类型的第三方库时),并在代码库的其余部分(包括控制器返回类型)使用Reactor。
我有一个函数返回,我想将它映射到(因为这是我在控制器方法中返回的东西)。 是否有更好的方法返回而不是? 我不能使用,因为映射函数不能接受s。
使用阻塞运算符,我可以这样做:
假设我有以下流程 只是为了理解 因此,我有 但我需要 继续皱眉 这个问题有什么好的解决办法吗?
有人有io的工作示例吗。grpc。在java中使用gRPC在客户端(存根)和服务器之间进行上下文传播? 我的理解是这是不可能的,我必须使用元数据。我说得对吗? 在网上,我只找到了使用标题而不是上下文的例子。 谢谢
问题内容: 经过一整天的研究和尝试,我终于放弃了 纯AJAX的 上传文件(ps:本文如何与JQuery异步上传文件?埋了我的最后希望) 我的问题可能没什么意义,但是我仍然想知道为什么ajax(或XMLHttpRequest)不能处理这个问题?为什么文件不能像真正的httprequest那样传输? 问题答案: 出于安全原因,JavaScript无法读取本地文件,因此我们无法使用AJAX发送数据。 但
我不知道这是与代码有关还是与服务器有关... 在一个PHP页面上,我调用了一个包含标准PHP上传过程的上传函数。在调用函数之后,我执行重定向(尝试使用window.location或header())。 奇怪的是,每件事都运行良好的几次,然后它就不会再上传了(uploadOK也不会是0)。它不会将文件移动到服务器上。 然后,我将取出重定向,上传将重新开始工作。我把重定向放回去,上传还能工作几次,然