import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.HttpHandler;
import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.netty.http.server.HttpServer;
public class UserHandler {
private final UserService userService;
public UserHandler(UserService userService) {
this.userService = userService;
}
// 根据id查询
public Mono<ServerResponse> getById(ServerRequest request){
// 获取id值
String id = request.pathVariable(“id”);
// 空值处理
Mono<ServerResponse> notFound = ServerResponse.notFound().build();
// 调用Service方法得到数据
Mono<User> userMono = userService.getById(Integer.parseInt(id));
// 把userMono进行转换返回
return userMono.flatMap(user ->
ServerResponse
.ok()
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(userMono))
.switchIfEmpty(notFound)
);
}
// 查询多个
public Mono<ServerResponse> getAll(ServerRequest request){
// 调用Service得到结果
Flux<User> users = userService.getAll();
return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(users, User.class);
}
// 保存
public Mono<ServerResponse> save(ServerRequest request){
// 获取User对象
Mono<User> userMono = request.bodyToMono(User.class);
return ServerResponse.ok().build(userService.save(userMono));
}
public static void main(String[] args) {
// 创建对象
UserService userService = new UserService();
UserHandler userHandler = new UserHandler(userService);
// 创建路由
RouterFunction<ServerResponse> route = RouterFunctions
.route(RequestPredicates.GET(“/user/{id}”).and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), userHandler::getById)
.andRoute(RequestPredicates.GET(“/users”).and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), userHandler::getAll);
// 路由和handler适配
HttpHandler httpHandler = RouterFunctions.toHttpHandler(route);
ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler);
// 创建服务器
HttpServer httpServer = HttpServer.create();
httpServer.handle(adapter).bindNow();
}
}
讯享网


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/192142.html