- Building RESTful Web Services with Spring 5(Second Edition)
- Raja CSP Raman Ludovic Dewailly
- 268字
- 2021-06-30 19:13:31
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)
);
}
- Application Development with Qt Creator(Second Edition)
- C++黑客編程揭秘與防范
- 物聯網工程規劃技術
- Truffle Quick Start Guide
- HTML5 Game development with ImpactJS
- 企業私有云建設指南
- Getting Started with Grunt:The JavaScript Task Runner
- VMware NSX網絡虛擬化入門
- Microsoft Power Platform Enterprise Architecture
- 設備監控技術詳解
- 中國互聯網發展報告2021
- Professional Scala
- NB-IoT原理和優化
- 智慧城市中的物聯網技術
- 中國信息化年鑒2017