官术网_书友最值得收藏!

updateUser – implementation in the handler and repository

Here, we will define and implement the updateUser method in our repository. Also, we will call the updateUser method in the main class through UserHandler.

We will add an abstract method for the updateUser method in the UserRepository class:

Mono<Void> updateUser(Mono<User> userMono);

In the UserRepositorySample class, we will add the logic to update the code. Here, we will use the userid as the key and the User object as the value to store in our map:

@;Override
public Mono<Void> updateUser(Mono<User> userMono) {
return userMono.doOnNext(user -> {
users.put(user.getUserid(), user);
System.out.format("Saved %s with id %d%n", user, user.getUserid());
}).thenEmpty(Mono.empty());
}

In the preceding code, we have updated the user by adding the specified user (from the request). Once the user is added in the list, the method will return Mono<Void>; otherwise, it will return the Mono.empty object. 

As we have added the updateUser method in the repository, here we will follow up on our handler:

public Mono<ServerResponse> updateUser(ServerRequest request) {
Mono<User> user = request.bodyToMono(User.class);
return ServerResponse.ok().build(this.userRepository.saveUser(user));
}

In the preceding code, we have converting the user request to Mono<User> by calling the bodyToMono method. The bodyToMono method will extract the body into a Mono object, so it can be used for the saving option.

As we did with other API paths, we add the updateUser API in Server.java:

public RouterFunction<ServerResponse> routingFunction() {
UserRepository repository = new UserRepositorySample();
UserHandler handler = new UserHandler(repository);
return nest (
path("/user"),
nest(
accept(MediaType.ALL),
route(GET("/"), handler::getAllUsers)
)
.andRoute(GET("/{id}"), handler::getUser)
.andRoute(POST("/").and(contentType(APPLICATION_JSON)), handler::createUser)
.andRoute(PUT("/").and(contentType(APPLICATION_JSON)), handler::updateUser)
);
}
主站蜘蛛池模板: 安平县| 云霄县| 玛纳斯县| 日土县| 上思县| 和林格尔县| 铁力市| 峨眉山市| 大宁县| 定安县| 禄劝| 珲春市| 兴山县| 石台县| 安徽省| 射洪县| 尤溪县| 凌云县| 和龙市| 科技| 聂荣县| 拉萨市| 韶关市| 肥城市| 乌鲁木齐县| 万安县| 永昌县| 余干县| 龙南县| 青海省| 托里县| 太仆寺旗| 东安县| 石河子市| 高尔夫| 文成县| 阳高县| 乐陵市| 金秀| 彭山县| 乃东县|