HTTP - Protocol

数据协议初稿

字段命名(KEY)

  • 字母全部小写,包括英文简称,单词之间用英文格式”_”分开,控制在3个单词之内
  • 命名与其功能,含义尽量一致或接近,避免number1,number2这种命名
  • 其它待补充

统计字段:

  • 放在User-Agent或以接口参数方式传给服务端
统计内容 | key      | value 
系统平台 | platform | iOS/Android/WP 
分发渠道 | channel  | AppStore/百度/腾讯/小米/安智 
程序版本 | version  | 1.0.0 
设备型号 | deviceid | iPhone/iPad/iPod/Andriod 
其他信息 | xxx      | xxxx 

枚举

  • 均以1为起始,避免以int接收0时,无法确定是否正常接收

  • 多选,发送端value = MyEnumValueA & MyEnumValueB,接收端 BOOL isValueA = MyEnumValueA ^ value

    typedef NS_OPTIONS(NSUInteger, MyEnum) {
        MyEnumValueA = 1 << 1,
        MyEnumValueB = 1 << 2,
        MyEnumValueC = 1 << 3,
    };
    
  • 单选

    typedef NS_ENUM(NSUInteger, MyEnum) {
       MyEnumValueA = 1,
       MyEnumValueB,
       MyEnumValueC,
    };
    

JSON

  • 若需要做压缩处理,优先选择gzip或zlib压缩方式
  • 解析后格式

    {
       "control":{
           "version":"1.0",
           "type":1,
           "error":0,
           "message":"xxx"
       },
       "data":{
           "serverTime":123456789
       }
    }
    
  • 字段说明

描述描述      | key            | value
错误代码      | error          | 0:正常。小于0的为错误状态
提示信息      | message        | 像成功的一些提示信息或错误信息等。
接口类型      | type           | 0x01XXXX 账户类 0x02XXXX 运营类 0x03XXXX 其它预留
实体数据      | data           | 所有实体数据,以下涉及到有响应数据的,全部在该字段下。
当前时间      | server_time    | 默认都是有的,用于客户端时间校准等