Одна из вещей, которая здесь не так, это как String id = monoUser.map(u -> u.get_id()).toString();
. ToString вернет вам строку типа «Mono @ 13254216541», потому что вы вызываете Mono.toString.
Еще одна вещь, вы не должны использовать данные запроса в теле своей функции, но в функции map или flatMap.
Вы можете заменить это чем-то вроде (я делаю это по голове, чтобы он не был на 100% синтаксическим ядром):
Mono<User> userMono = request.bodyToMono(User.class);//Create a Mono<User>
userMono.map((user) -> { //In the map method, we access to the User object directly
if(user != null && user.getId() != null){
return userRepository.insert(user); // Insert User instead of Mono<User> in your repository
}
return null;
}) //This is still a Mono<User>
.map(insertedUser -> ServerResponse.ok(insertedUser)) //This is a Mono<ServerResponse>
.switchIfEmpty(ServerResponse.ok());
Надеюсь, это поможет!