问题标签 [webflux]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
265 浏览

spring-boot - 在 Spring WebFlux Rest API 项目中使用 @ControllerAdvice

我想知道在 WebFlux 项目中使用 @ControllerAdvice 或实现扩展 DefaultErrorAttributes 的自定义类是否安全。还是两者都实施?

喜欢:

  1. 使用 @ControllerAdvice 注释的自定义类,用于处理选择处理程序发生的异常。
  2. 扩展 DefaultErrorAttributes 以处理在选择处理程序之前发生的异常的自定义类。

提前致谢。

0 投票
0 回答
26 浏览

spring - Spring webflux oauth2 资源服务器自动配置身份验证转换器

有人知道为什么我需要下面的代码线才能让它工作吗?

我认为它应该通过配置 Bean 自动应用?

.jwtAuthenticationConverter(reactiveJwtAuthenticationConverter()) //<-- 为什么我需要这条线???

0 投票
1 回答
78 浏览

spring - Spring Cloud GlobalFilter:失败时重新发送修改的请求

我们使用带有 GlobalFilter 的 Spring Cloud Gateway 来处理对请求的令牌注入。这是过滤器的代码:

-tokenService.getToken()方法从缓存中返回一个令牌,如果缓存中不存在,则从后端返回一个新令牌。但是可能会导致令牌在后端失效。如果再次使用令牌发出请求,后端会以 401 响应。在这种情况下,我们要拦截响应,使缓存无效,从后端请求新令牌(之后再次缓存)并重新发送请求使用新令牌。此外,还设置了一个标头,指示已重试请求以避免无限循环。这应该对客户透明地发生。

以下是关于什么应该是所需的数据流的简短说明: 在此处输入图像描述

到目前为止我已经尝试过的:

但是我在后端日志中看不到第二个请求。

如何将修改后的请求再次发送到后端?

0 投票
0 回答
78 浏览

reactive-programming - 如何链接来自不同服务的响应,以便在 WebFlux 中使用“那些响应”创建 Flux 响应?

关于问题的语境化:

  1. 我正在尝试链接来自多个服务的数据,以便聚合/合并它们的响应;

    1. 我的目标是使用从“合并响应”创建的对象列表创建最终通量。

      1. 合并基于2个服务(userService + postService)

        1. 以下是上述情况的代码:

代码:

问题:

  • 如何完成“userAllDto.setPosts”,
    • 通过获取“PostAllDto”对象创建一个列表,
      • 并将此列表插入“userAllDto.setPosts”?

当前有问题的 JsonResponse(邮递员):

更新:

找到解决方案

解决方案的 JsonResponse(邮递员):

非常感谢您的帮助

0 投票
2 回答
596 浏览

spring - 如何使用 Spring WebClient 顺序进行多次调用?

我阅读了主题 如何使用 Spring WebClient 同时进行多个调用?,但我的情况有点不同。我正在使用 webclient 调用 2 个不同的外部服务,比如说从方法 Mono < Void > A() ,然后是 Mono < Void > B ()。我的目标是从 A() 中提取数据,然后将其传递给 B()。有没有正确的方法可以避免:

  • 异步调用(导致非法 arg 异常,因为 B 在 A() 完成之前请求 args);
  • 阻塞调用,导致系统反应。

有没有一种标准的方法来实现它?

0 投票
1 回答
64 浏览

java - 成功和错误时记录响应时间 - Webflux(即使出现错误也会调用 doOnSuccess)

我编写了这个过滤器来测量 API 的响应时间。当我收到错误时触发 onSuccess。有什么方法可以分别登录成功和错误以更好地记录。

0 投票
2 回答
496 浏览

spring-boot - SpringBoot - WebFlux 获取 ClassCastException 的通用函数

我正在尝试编写一个通用函数来执行一些 Webflux 操作,但我遇到了一个我无法弄清楚的类转换异常

此代码以其非通用形式正常工作。但是当我用这样的东西调用这个泛型方法时

我得到一个例外:

我正在运行 SpringBoot 2.4.5 版,所以我认为这不适用:https ://github.com/spring-projects/spring-framework/issues/20574

只是为了更多的上下文,在上面的示例中,ViewModel(通用类型<V>)是服务返回其数据的格式。然后我只提取我需要的部分,在这种情况下是一个字符串(通用类型<U>)传入的 lambda 函数从响应中获取相关字符串。但由于某种原因,Mono 没有正确映射到 ViewModel。如果我取出 map() 并返回 ViewModel,它似乎可以工作。

同样,如果我以非通用方式执行此操作,则效果很好。我可以执行 map() 步骤并正确返回一个字符串

更新

只是想明确一点,这适用于像这样的非通用版本:

它被称为这种方式

它正确返回一个字符串,这正是我想要的通用版本

0 投票
0 回答
13 浏览

spring - 如何组装反应功能模块?

我是 webflux 初学者。基本的算子我都学过了,但是怎么用却很难应用。假设有一个响应 Flux 的函数,我想给响应一些具有 List 作为成员变量的对象。我应该怎么办?

结果.java

服务.java

路由器.java

0 投票
1 回答
339 浏览

spring-webflux - 在 Spring WebFlux 中,如何链接来自多个服务/存储库的方法,以便“删除”多个 DB-Collections 中的元素?

1)关于问题的语境化:

我正在尝试使用 03 个不同的服务/存储库(userService + postService + userRepo)在 03 个不同的 DB-Collections(Reactive MongoDB)中“删除”项目;

我的目标是使用相同的链接代码同时删除一个对象(在每个集合中);

以下是上述情况的代码:

1.1) 代码:

当前工作状态:不工作;

当前行为:不执行任何删除,无论是 delete-userService、delete-postService 还是 delete-userRepo。


2)问题:

  • 如何删除不同 DB-Collections 中的不同元素,
    • 通过仅使用一个使用三个“删除方法”的“链式删除方法”
      • 三种不同的服务/repo(userService + postService + userRepo?

3)更新:

找到解决方案

非常感谢您的帮助

0 投票
0 回答
74 浏览

spring - Spring WebClient 编码 + 字符不正确

我正在尝试在查询参数中使用“+”来实现 GET 调用。

我正在做的正是Spring 文档中的内容

我正在使用 Spring 默认的 WebClient.Builder

我的代码是:

输入:一些+@mail

预期行为:GET /api/v0?email=some%2B%40mail

实际行为:GET /api/v0?email=some%20%40mail

'+' 字符用 %20 而不是 %2B 编码

我也尝试了其他几个选项,但没有一个能够提供所需的结果。