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

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)
);
}
主站蜘蛛池模板: 绍兴市| 潼关县| 榕江县| 五指山市| 余干县| 资兴市| 甘孜| 修武县| 孝义市| 郧西县| 中牟县| 横峰县| 阜城县| 饶阳县| 楚雄市| 岳池县| 东乌珠穆沁旗| 江油市| 滨州市| 乌拉特前旗| 漠河县| 石阡县| 巴彦淖尔市| 武胜县| 澄城县| 阜城县| 通州市| 贺州市| 手机| 九江市| 板桥市| 馆陶县| 开封市| 南漳县| 亚东县| 怀宁县| 民县| 宁国市| 中江县| 丹巴县| 黑水县|