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

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)
);
}
主站蜘蛛池模板: 皋兰县| 布尔津县| 洪江市| 东乡县| 栾城县| 汪清县| 丘北县| 突泉县| 中山市| 松桃| 阿城市| 瑞昌市| 彝良县| 宜君县| 通州市| 龙川县| 苗栗市| 甘孜| 井陉县| 阿荣旗| 乌鲁木齐县| 白玉县| 油尖旺区| 运城市| 阜新市| 大名县| 印江| 通江县| 澄城县| 阿图什市| 佛山市| 烟台市| 芜湖市| 东台市| 斗六市| 昌吉市| 自治县| 金华市| 财经| 阳山县| 克东县|