Vertx 实现webapi实战项目(二)
消息解析:消息序列化和反序列化---上传json解析和返回json编码。
整理下工程项目

一:实现消息接口,在imp文件夹下新建接口MessageFactory
1 /******
2 * 消息编码/解码
3 * *******/
4 public interface MessageFactory {
5 void decode(short apiCode, JsonObject body, HttpServerRequest request);
6
7 void encode();
8 }
二:实现一个主类
1 public abstract class AbstractMessage implements MessageFactory{
2 protected JsonObject bodyData;
3
4 protected short messageId = -1;
5
6 //上传json解析
7 @Override
8 public void decode(short mId,JsonObject body, HttpServerRequest request){
9 this.bodyData = body;
10
11 messageId = mId;
12
13 decodeMessage();
14 }
15
16 //返回json编码
17 @Override
18 public void encode(){
19 encodeMessage();
20 }
21
22 protected abstract void decodeMessage();
23
24 protected abstract void encodeMessage();
25
26 public static JsonObject decodeUpMessage(Buffer body){
27 if(body == null)
28 return null;
29
30 try {
31 return body.toJsonObject();
32 }catch (DecodeException es){
33 return null;
34 }
35 }
36 }
三:实现json解码和编码
1 //上传json解码
2 public abstract class AbstractUpMessage extends AbstractMessage{
3 @Override
4 protected void decodeMessage() {
5 decodeBody();
6 }
7
8 @Override
9 protected void encodeMessage() {}
10
11 protected abstract void decodeBody();
12 }
1 //返回json编码
2 public abstract class AbstractDownMessage extends AbstractMessage {
3 protected int resultCode;
4
5 public AbstractDownMessage(){
6 bodyData = new JsonObject();
7 }
8
9 @Override
10 protected void decodeMessage() {
11
12 }
13 @Override
14 protected void encodeMessage(){
15 bodyData.put("mId",messageId);
16 bodyData.put("code",resultCode);
17
18 encodeBody();
19 }
20
21 protected abstract void encodeBody();
22
23 public String SendMessage (){
24 return bodyData.encode();
25 }
26 }
到此消息解析完成

Vertx 实现webapi实战项目(二)的更多相关文章
- PYTHON 爬虫笔记九:利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集(实战项目二)
利用Ajax+正则表达式+BeautifulSoup爬取今日头条街拍图集 目标站点分析 今日头条这类的网站制作,从数据形式,CSS样式都是通过数据接口的样式来决定的,所以它的抓取方法和其他网页的抓取方 ...
- C# WebApi+Task+WebSocket实战项目演练(四)
一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第四部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...
- ASP.NET WebAPI数据传输安全HTTPS实战项目演练
一.课程介绍 HTTPS是互联网 Web 大势所趋,各大网站都已陆续部署了 HTTPS . 全站HTTPS时代,加密用户与网站间的交互访问,在客户端浏览器和Web服务器之间建立安全加密通道,一般情况 ...
- .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
本篇我将带着大家一起来对Dapper进行下封装并实现基本的增删改查.分页操作的同步异步方法的实现(已实现MSSQL,MySql,PgSQL).同时我们再实现一下仓储层的代码生成器,这样的话,我们只需要 ...
- Selenium Web 自动化 - 项目实战(二)
Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...
- (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结
Android项目实战(二十七):数据交互(信息编辑)填写总结 前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: ...
- (转载)Android项目实战(二十八):Zxing二维码实现及优化
Android项目实战(二十八):Zxing二维码实现及优化 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...
- vue+websocket+express+mongodb实战项目(实时聊天)(二)
原项目地址:[ vue+websocket+express+mongodb实战项目(实时聊天)(一)][http://blog.csdn.net/blueblueskyhua/article/deta ...
- .NET Core实战项目之CMS 第九章 设计篇-白话架构设计
前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...
随机推荐
- 国产化-内存数据库tendis-单机安装(完美替代redis)
挺好的产品腾讯能开源还是体现了大厂的担当和格局,赞一个.阿里也开源了一些不错的产品后面讲. Tendis 介绍 Tendis 是腾讯公司开源的一款高性能分布式存储系统,基于 Redis 协议开发,具有 ...
- 理解Rust引用及其生命周期标识(下)
在上一篇文章中,我们围绕 "引用必然存在来源" 这一基本概念,介绍了Rust中引用之间的关系,以及生命周期标记的实际意义.我们首先从最简单的单参数方法入手,通过示例说明了返回引用与 ...
- python 工具uv
以下是 Python 环境管理工具 uv 从入门到精通的系统性指南,基于 2025 年最新版本特性整理: 一.uv 核心优势与适用场景 极速性能 • 基于 Rust 开发,依赖解析速度比传统工具快 1 ...
- WCHNET_SocketSend返回0x11原因及解决方法
问题描述: TCPCLIENT模式使用WCHNET_SocketSend发送有概率会返回0x11 按wchnet.h定义为内存溢出错误. 异常分析: 通过WCHNET_QueryUnack查看,发现异 ...
- 国内首个「混合推理模型」Qwen3深夜开源,盘点它的N种对接方式!
今日凌晨,通义千问团队正式开源了 Qwen3 大模型,并且一口气发布了 8 个型号,其中包括 0.6B.1.7B.4B.8B.14B.32B 以及 30B-A3B 和 235B-A22B,使用者可以根 ...
- Spring基于XML AOP事务控制
Spring基于XML AOP事务控制 源码 代码测试 pom.xml <?xml version="1.0" encoding="UTF-8"?> ...
- 使用IDEA管理服务器Docker及远程仓库
目录 配置连接Docker服务器及远程仓库 连接服务器Docker 远程仓库(可选) IDEA管理 确保docker服务器已经开启了远程守护进程访问.[1] 配置连接Docker服务器及远程仓库 连接 ...
- 获取接口方式(Bean注入方式总结)
一.在工具类中使用SpringContextHolder获取Bean对象,用来调用各个接口 /** * 获取阿里巴巴属性列表映射 * * @author 王子威 * @param alibabaPro ...
- SQL 日常练习(十五)
这两周真的是被客户搞怕了, 我一个数据分析师, 干着比程序员还复杂的活, 拿着文员的工资, 看这我每天下班的打卡时间, 感觉我一点求生欲都没有,真的不知道图啥. 快速理解业务, 马上建数据库表, 写后 ...
- MFC对话框显示时背景闪烁
在显示一个对话框时,可以在WM_PAINT消息处理函数中绘制窗口的背景色.但会出现一种情况,在还未执行完OnPaint函数,对话框已经先显示出白色窗体,如下: 还未绘制窗体,背景色先被显示. 解决办法 ...