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

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)
);
}
主站蜘蛛池模板: 加查县| 丹棱县| 聂拉木县| 安达市| 山丹县| 合阳县| 客服| 和顺县| 电白县| 乡宁县| 塔河县| 甘南县| 全南县| 卢龙县| 巧家县| 沛县| 万源市| 南召县| 登封市| 南陵县| 武乡县| 株洲市| 巧家县| 汕尾市| 阿克| 福建省| 沙田区| 保靖县| 灵台县| 临潭县| 晋江市| 丰台区| 聊城市| 高平市| 南开区| 应用必备| 五家渠市| 金平| 中牟县| 古田县| 苏州市|