zoukankan      html  css  js  c++  java
  • 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

    到此消息解析完成

  • 相关阅读:
    WHMCS系统API调用
    Zend Guard Loader/Zend Loader是干什么的
    代理IP收集
    Jenkins 2.x版本的节点配置选项更新
    Visual Studio 2015 未响应/已停止工作的问题解决
    Visual Studio多版本进行切换的研究
    商城产品如何应对多个客户不同的需求修改并发布对应客户的文件
    Visual Studio插件
    微软注册dll在dotnet开发时起到缓存的作用
    Visual Studio 2015出现Cannot find one or more components. Please reinstall the application.的问题解决
  • 原文地址:https://www.cnblogs.com/cj8988/p/15011029.html
Copyright © 2011-2022 走看看