Java反应式编程(3)
创始人
2024-01-21 22:41:08

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~

在前面的文章中已经把vert.x框架给跑起来了,但是实际开发中服务端是需要响应客户端的请求的,所以肯定需要增加接口,但是该怎么加呢?有的人倾向于去搜索引擎找答案,其实还有一个比较好的方式是去官网看看有啥可以用的资料,比如说打开反应式编程的官网就能直接找到最新最准确的文档:

 

可以看到,点击进入【Vert.x Web】之后,再在左边浏览,然后点击【Routing by HTTP method】:

 

为了节约大家的时间,我就直接把代码展示出来了。

先创建接口路由和GET请求:

// 创建路由
Router router = Router.router(vertx);// 创建一个GET请求
router.route(HttpMethod.GET, "/vertx/get").handler(context -> {MultiMap queryParams = context.queryParams();String username = queryParams.contains("username") ? queryParams.get("username") : "unknown";String password = queryParams.contains("password") ? queryParams.get("password") : "unknown";context.json(new JsonObject().put("username", username).put("password", password));});

再创建POST请求和HTTP服务

// 创建一个POST请求(用Postman测试)
router.route(HttpMethod.POST, "/vertx/api/:id/:username/").handler(context -> {String id = context.pathParam("id");String username = context.pathParam("username");System.out.println(id + " - " + username);context.json(new JsonObject().put("errcode", "200").put("message", "success"));});// 创建HTTP服务
vertx.createHttpServer().requestHandler(router).listen(8888, http -> {if (http.succeeded()) {startPromise.complete();System.out.println("HTTP server started on port 8888");} else {startPromise.fail(http.cause());}
});

现在可以先把代码运行一下看看,比如在浏览中访问

http://localhost:8080/vertx/get?username=xiangwang&password=123456

就能看到返回的JSON数据:

 

然后在Postman中访问POST请求,也能看到返回的JSON数据

 

现在Web的功能已经演示完了,接下来再来看看数据库的,同样可以去官网 找文档,可以看到,vertx支持大部分主流的SQL和NoSQL。

 

还是和之前一样,为了节约大家的时间,我就直接把MySQL的演示代码贴出来了。下面的配置是我电脑里面的MySQL数据库连接:

// 创建MySQL连接
MySQLConnectOptions connectOptions = new MySQLConnectOptions()// 端口号.setPort(3306)// IP地址或者域名.setHost("192.168.227.100")// 数据库.setDatabase("third")// 用户名.setUser("root")// 密码.setPassword("123456");
// 连接池选项
PoolOptions poolOptions = new PoolOptions().setMaxSize(5);
// 创建连接池
MySQLPool client = MySQLPool.pool(vertx, connectOptions, poolOptions);
// 简单查询
client.query("SELECT * FROM apply_info").execute(ar -> {if (ar.succeeded()) {RowSet result = ar.result();System.out.println("获取到了 " + result.size() + " 行数据");for (Row row : result) {System.out.println("appid = " + row.getString("appid"));}} else {System.out.println("Failure: " + ar.cause().getMessage());}// 关闭client.close();});

有个小地方,如果提示报错:

 

只需要把代码中的【MySQLPool.pool(connectOptions, poolOptions);】改成【MySQLPool.pool(vertx, connectOptions, poolOptions);】就行了。

这就是最基础的反应式编程的代码示例了。虽然它还没有大规模应用,但是管它呢,先卷起来再说。


感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...