首页 > 解决方案 > spring5 webflux,如何返回自定义json数据?

问题描述

当我不使用 webflux 时,我的代码

1.public Map<String, Object> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status":1);
    userRepository.save(user);
    return map;

当我使用 webflux 时,我的代码

2.public Mono<Map<String, Object>> registerService(User user) {
    Map<String, Object> map = new HashMap<>(8);
    map.put("status", 1);
    userRepository.save(user);
    return Mono.just(map);
}

和 2. 响应是 "{"status":1}",但用户不要插入 mongo

在 webflux 中,我无法得到与 1. 相同的响应,那么该怎么做呢?

我不想返回用户,只返回我自定义的地图,然后用户插入到 mongodb

标签: javaspringspring-mvcspring-bootspring-webflux

解决方案


假设您的用户存储库返回类型也是 Mono,并且您想返回您的自定义地图,您可以这样做

public Mono<Map<String, Object>> registerService(User user) {
    return userRepository.save(user)
        .map(__ -> {
            Map<String, Object> map = new HashMap<>();
            map.put("status", 1);
            return map;
        });
}

在上面的代码中,您并没有破坏反应链,而是像您想要的那样返回您的自定义地图。


推荐阅读