当前位置: 首页 > 知识库问答 >
问题:

将响应实体迁移到Mono

王彭薄
2023-03-14

在一个spring boot应用程序中,我用webclient给ms打了一个电话

响应实体响应 = webClient.post() .uri(“/auth/login”) .body(Mono.just(loginRequest), LoginDto.class) .retrieve() .toEntity(LoginResponse.class) .block();

在我把角色放到一个集合中之后

Collection<? extends GrantedAuthority> authorities = response.getBody().getRoles().stream()
            .map(item -> new SimpleGrantedAuthority(item)).collect(Collectors.toList());

在我创建一个Mono返回后

Mono.just(new UsernamePasswordAuthenticationToken(username, password, authorities));

我修改了ms以返回Mono

有了这个变化,我不知道该改变什么

Mono<ResponseEntity<LoginResponse>> response = webClient.post()
            .uri("/auth/login")
            .body(Mono.just(loginRequest), LoginDto.class)
            .retrieve()
            .toEntity(LoginResponse.class);

Collection<? extends GrantedAuthority> authorities = response.getBody().getRoles().stream()
            .map(item -> new SimpleGrantedAuthority(item)).collect(Collectors.toList());

Mono.just(new UsernamePasswordAuthenticationToken(username, password, authorities));

共有1个答案

那存
2023-03-14

使用flatMap以异步方式将某物映射到其他对象。

public Mono<UsernamePasswordAuthenticationToken> foobar() {
    Mono<ResponseEntity<LoginResponse>> response = webClient.post()
            .uri("/auth/login")
            .body(Mono.just(loginRequest), LoginDto.class)
            .retrieve()
            .toEntity(LoginResponse.class);

    return response.flatMap(response -> {
        Collection<? extends GrantedAuthority> authorities = response.getBody()
             .getRoles()
             .stream()
             .map(item -> new SimpleGrantedAuthority(item))
             .collect(Collectors.toList());
        return Mono.just(new UsernamePasswordAuthenticationToken(username, password, authorities));
    }
}
 类似资料:
  • 我正在使用OpenJDK 12中的Nashorn JS引擎。纳肖恩似乎遭到了反对。我正在寻找可用的替代方案。我找到了GraalVM,但我不确定这是不是最好的。如何从Java执行GraalVM JavaScript?你有什么例子吗? Nashorn用的是Java: 在Nashorn中,我创建了一个WrappedMongoDatabase,它扩展了AbstractJSObject。在那里,我添加了一些

  • 问题内容: 将Express.js从版本2更新到了版本3,以下调用中断了,因为它不再存在于V3中: 有一个迁移指南说: (使用中间件+ res.locals) 但是我很困惑如何做到这一点。是否有一个更具体的示例说明如何进行迁移? 相关的SO post: Node.js Express3.0 问题答案: 我有同样的问题 session.user ,只是通过了解该app.use功能必须是固定的, 在

  • 我的迁移搞砸了,我在初始迁移时使用了,但现在我想删除所有的迁移,并从具有所有逻辑的初始迁移开始。 当我删除文件夹中的迁移并尝试时,它不会生成完整的文件(它是空的--因为自从上次(现在已删除)迁移以来,我没有做任何更改)。 是否有Disable-Migrations命令,以便我可以重新运行?

  • 我正试图从maven迁移到gradle,但CheckStyle出现了一个奇怪的错误。 这是我得到的错误 如何让gradle使用最新版本的CheckStyle?值得注意的是,我的使用了maven checkstyle 6.10.1和6.8

  • 我要迁移一个JavaApplet通过JNLP启动,作为一个Java的Web Start应用程序,并遇到一些麻烦/误解... 我得到的资源之一是这样的:6迁移JavaAppletJavaWeb Start和JNLP: 让我们开始吧,但是: 目前,该应用程序是一个小程序(),过去是通过将小程序标记嵌入到HTML中来启动的,小程序标记指的是JNLP。 现在,由于所有浏览器都放弃了对小程序的支持,我应该将

  • 我正在寻找最好的方法来迁移我的应用程序数据库,它使用firebase实时数据库到新的云Firestore数据库。对于我正在进行的项目,我确信我不需要做任何数据模式的更改,所以我几乎只是尝试1-1映射它。Firebase在他们的网站上建议只编写一个脚本来实现这一点,但我不确定最好的方法。有没有人已经做了一个脚本来完成这件事?