- Building RESTful Web Services with Spring 5(Second Edition)
- Raja CSP Raman Ludovic Dewailly
- 267字
- 2021-06-30 19:13:31
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)
);
}
- Building Django 2.0 Web Applications
- Truffle Quick Start Guide
- Spring Boot 2.0 Projects
- 物聯網檢驗檢測技術
- 物聯網關鍵技術及應用
- Learning Swift(Second Edition)
- IPv6網絡切片:使能千行百業新體驗
- Windows Server 2012 Hyper-V虛擬化管理實踐
- 光纖通信系統與網絡(修訂版)
- 想象的互動:網絡人際傳播中的印象形成
- Migrating to Drupal7
- ElasticSearch Server
- 互聯網視覺設計(全彩慕課版)
- Twilio Cookbook(Second Edition)
- 物聯網:感知、傳輸與應用