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

createUser – implementation in the handler and repository

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

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

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

Here, we will talk about how to save the user by using the sample repository method.

In UserRepositorySample (the concrete class for UserRepository), we will implement the abstract method createUser:

@Override
public Mono<Void> saveUser(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 used doOnNext to save the user on the repository. Also, the method will return the empty Mono in the case of failure.

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

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

In the UserHandler class, we have created the createUser method to add a user through a handler. In the method, we extract the request into Mono by the bodyToMono method. Once the user is created, it will be forwarded to UserRepository to save the method. 

Finally, we will add the REST API path to save the user in our existing routing function 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)
);
}
主站蜘蛛池模板: 张家港市| 临沧市| 长乐市| 深水埗区| 崇仁县| 德格县| 溧水县| 德安县| 嘉义县| 张北县| 板桥市| 西青区| 鲁山县| 成武县| 灵武市| 易门县| 神木县| 阿坝县| 修文县| 宜君县| 宜君县| 思南县| 奉新县| 界首市| 大宁县| 万载县| 武平县| 特克斯县| 东乌珠穆沁旗| 句容市| 德安县| 香河县| 德格县| 耒阳市| 朝阳县| 岳普湖县| 黎平县| 天津市| 新郑市| 纳雍县| 奉新县|