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 }
View Code

 

二:实现一个主类

 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 }
View Code

 

三:实现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 }
View Code
 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 }
View Code

 

到此消息解析完成

 

posted @ 2021-07-14 15:14  Foto_CShow  阅读(214)  评论(0编辑  收藏  举报