当前位置:网站首页 > 编程语言 > 正文

webflux入门(webflux web)



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();
}
}










































































































































































































到此这篇webflux入门(webflux web)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • u盘虚拟空间(u盘虚拟盘)2025-09-17 17:54:10
  • tip 影响因子(tip影响因子2024)2025-09-17 17:54:10
  • lda主题模型文本分类(lda主题模型基本原理)2025-09-17 17:54:10
  • 预适应训练仪多少钱一台(预适应训练仪多少钱一台?)2025-09-17 17:54:10
  • 为什么卡巴斯基老是更新失败(卡巴斯基为什么安装不了)2025-09-17 17:54:10
  • 游戏分类的依据(游戏的分类标准和分类方法)2025-09-17 17:54:10
  • linux改目录名字命令(linux中修改目录名称的命令)2025-09-17 17:54:10
  • Ubuntu镜像文件(ubuntu镜像文件下载官网)2025-09-17 17:54:10
  • 安卓版windows虚拟机下载安装(安卓windows10虚拟机下载)2025-09-17 17:54:10
  • pointnet改进(pointnet改进专栏)2025-09-17 17:54:10
  • 全屏图片