v0.0.1
本文为markdown格式文本,可使用beyond compare或类似工具比较版本间的修改。
改动时请拉取最新代码进行改动(推荐),或者在git.oschina.net对应文件下进行编辑。
不要用空格缩进,而应该用tab缩进。
-
2015/06/29, viney, 0.0.1
-
手动注册
-
一键发布
-
手机请求:json请求消息-->http post 请求-->服务器
服务器响应:json响应消息-->http response 响应-->终端
消息格式为Json,
参考:http://www.json.org/json-zh.html
request=请求数据
服务器注意需要处理Content-Type为空的情况,
因为这种情况下IIS默认的http流程无法正常解析。
开发:http://applet.test.bixiuke.me
使用标准json格式;
所有的key都为字母小写, 且不用复数;
值的类型只有字符和字符数组;
对每个字段必须注释说明;
不能使用拼音作为字段名, 除非本身就是拼音;
外层字段尽量用完整的单词,内层字段可以简化;
无特别情况,值不可为空,终端和服务器都要考虑处理字段为空的情况;
{
// 协议版本号, 用于以后协议兼容判断。
"api": "1.0",
// 随机整形字符串,不可为空,确保该ID在一定时间内(几秒钟)所生成的是唯一数值,
// 主要用于过滤请求通过网关后产生其他相同的请求,用于防止网关数据包重发。
// 终端确保该序号在本次使用终端过程中不会重复。
// 服务器需要对每个响应缓存3秒左右,
// 3秒之内若有相同包序列号的请求,则返回缓存的数据。
"serial": "2534",
// 在线ID,取登录时返回的session值.
// 此值确保使用服务器资源的用户是唯一的,例如sip服务器资源。
// 如果未有session值,此字段必须但内容可以为空值。
// 业务功能需要检验此值时进行校验,如果不一致,返回用户登录状态无效,需重新登录。
"session": "1234",
// 请求context数据
"ctx": {
// 账户信息
"acc": {
// 用户id,
// 值可为空。
"uid": "5000000",
// 用户密码,
// 值可不可为空。
// 默认传6个0
"pwd": "123456"
},
// 软件信息
"app": {
// 版本号
"ver": "1.0.0",
// 已知线上版本
"onlinever": "2.0.0",
// 渠道号
"chan": "1000"
},
// 设备信息
"dev": {
// 以下设备信息的hash值,方便服务端比较
"hash": "100234444566",
// 操作系统类型
// 1: android,
// 2: ios
// 3: wap
"os": "1",
// anroidI sdk版本号
"sdk": "2.2",
// 设备token,终端设备生成的唯一码。
"token": "123388888-1asdfasdf-1234r1234",
// 手机型号
"model": "Samsun 9100",
// 手机IMEI号,
"imei": "353641012835017",
// SIM卡IMSI号,
"imsi": "460000000000000",
// 屏幕尺寸
// 宽乘长,乘号是字母x,
"screen": "240x320",
// 设备物理地址
"mac":"C8:AA:21:F6:EB:F8"
},
// 语言环境,
// 值不可为空
"lang": "zh_cn",
// 注意,这个值只是当前联网类型,
// 这主要是用于注册,识别网络功能与终端联网统计分析
// 双卡双待的手机,取当前用户设置应用网络的值,
// 值不可为空。
// none,表示未知;
// wifi,用的是wifi联网;
// 在非wifi网络下判断终端接入点,上传原始字符串,如下现有
// cmwap,表示移动cmwap;
// cmnet,表示移动cmnet;
// uniwap,表示联通uniwap;
// uninet,表示联通uninet;
// 3gwap,表示3gwap
// 3gnet,表示3gwap
// ctwap,表示电信ctwap;
// ctnet,表示电信ctnet;
// TODO: 3G, 4G甚至更多网络类型在读取后逐步添加
"net": "wifi"
},
// 请求方法
"method": "balance",
// 请求参数,值可为空
"param": {
// 具体实现
}
}
{
// 协议版本号, 用于以后协议兼容判断。
"api": "1.0",
// 对应请求的序列号
"serial": "2456",
// 响应上下文相关的信息
"ctx": {
// 版本信息
"app": {
// 最新版本
"ver": "2.0.0",
// 提示消息,值可为空
"hint": "有新的版本,可以免费打长途.",
// 下载链接,值可为空,格式为:http://hosturl.baseurl.com/?
"url": "http://download.sqt001.com/android/sqt_v200_c1000.apk",
},
// 消息中心,最新信息
// TODO: 个人消息
"msg": {
// 版本号根据最大消息ID确定
// "ver":"id",
// 内容
"content": [
// i, 消息的序列号,唯一性
// t, 消息类型,0: 文本 1: URL 2: HTML 3: JSON
// TODO :消息类型按需求添加,待完全商讨
// h, head简写,表示标题;
// b, body简写,表示整条消息内容,body在看的时候根据ID才拉取的;
// w, when简写, 表示消息时间;
// e, endtime 简写 , 表示优惠信息结束时间 格式:yyyy-MM-dd hh:mm:ss;
// r, 表示是否读过此消息,0为未读、1为已读
// from, 消息来源者ID
// to, 消息去向者ID
{"i":"1","t":"0","h":"title", "b":"body", "w":"","e":"","r":"","from":"10011", "to":"10012"}
]
},
// 响应方法
"method": "balance",
// 响应内容,可为空
"data": {
//成功信息
// 可以为空
"msg": "操作成功",
// 具体响应
// ...
},
// 本次操作信息
// error 值可为空时,无错误返回,读取data值;
// error 值不可为空时,处理错误信息,不处理data值。
"error": {
// TODO: 部分错误需 引导用户下一步操作,例如,需要一个URL链接等。
// 整形字符值,不可为空。
// 用于表示本次操作的结果。
// 操作结果号,
// TODO:过多,需要整理下
"code": "0",
// 错误原因,
// 当err不为0时,根据具体场景来显示给用户。
// 值可为空。
"reason": "号码格式错误",
// 开发用调试信息
"debug": "Database exception"
}
}
}
手动注册需要用户输入手机号并提交给服务器进行注册。
请求
{
// reg/hand
"method": "reg.hand",
// 手动注册参数
"param": {
// 用户输入的手机号
"num": "13800138000"
}
}
响应
{
// 手动注册响应
"method": "reg.hand",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "注册失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"msg": "操作成功",
"user": {
// 用户账户ID,
// 值可为空。
"uid": "5922842",
// 用户密码,
// 值可为空。
"pwd": "123456",
// 用户绑定的手机号。
// 值可为空。
"num": "1342896xxxx"
}
}
}
根据类别或关键词查询
请求
{
// query/key
"method": "query.key",
// 参数
"param": {
// 分类或关键词
"key": "iPhone6"
}
}
响应
{
// 响应方法
"method": "query/key",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"products": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg",
// 标题
"title": "三星屏幕",
// 区域
"area": "华强北",
// 价格
"price": "168",
// 距离
"distance": "1km",
// 时间
"time": "20分钟"
},
...
]
}
}
滚动banner广告
请求
{
// banner/ad
"method": "banner.ad",
// 参数
"param": {
}
}
响应
{
// 响应方法
"method": "banner/ad",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
// 根据ID查询详细信息
"ids": [
{
"id": "1",
"logo": "http://xxx.com/1.jpg"
},
...
]
}
}
产品详细信息
请求
{
// product/detail
"method": "product.detail",
// 参数
"param": {
// 产品ID
"id": "1"
}
}
响应
{
// 响应方法
"method": "product/detail",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"product": {
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg",
// 产品图片
"imgs": ["http://xxx.com/1.jpg"],
// 标题
"title": "三星屏幕",
// 简介
"content": "三星屏幕150元",
// 价格
"price": "168",
// 品质
"quality": "全新",
// 区域
"area": "华强北",
// 详细描述
"content": "全新三星屏幕S6,只需要160元"
}
}
}
产品分类信息
请求
{
// product/classify
"method": "product.classify",
// 参数
"param": {
// 产品ID
"id": "1"
}
}
响应
{
// 响应方法
"method": "product/classify",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"classifys": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/1.jpg",
// 名称
"name": "屏幕"
},
...
]
}
}
产品二级分类信息
请求
{
// classify/second
"method": "classify.second",
// 参数
"param": {
// 产品ID
"id": "1"
}
}
响应
{
// 响应方法
"method": "classify.second",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"classifys": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/1.jpg",
// 名称
"name": "屏幕"
},
...
]
}
}
产品分类详情
请求
{
// classify/detail
"method": "classify.detail",
// 参数
"param": {
// 唯一标识
"id": "1"
}
}
响应
{
// 响应方法
"method": "hot/detail",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"products": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg",
// 标题
"title": "三星屏幕",
// 区域
"area": "华强北",
// 价格
"price": "168",
// 距离
"distance": "1km",
// 时间
"time": "20分钟"
},
...
]
}
}
首页显示热销产品
请求
{
// product/hot
"method": "product.hot",
// 参数
"param": {
}
}
响应
{
// 响应方法
"method": "product.hot",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"products": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg"
},
...
]
}
}
首页显示热销产品详情
请求
{
// hot/detail
"method": "hot.detail",
// 参数
"param": {
// 唯一标识
"id": "1"
}
}
响应
{
// 响应方法
"method": "hot/detail",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 类型
// 终端根据类型切换到下一个展示页面
// 1、产品详情页;2、分类列表信息;3、关键词搜索
"type": "1"
// 成功信息
// 可以为空
"products": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg",
// 标题
"title": "三星屏幕",
// 区域
"area": "华强北",
// 价格
"price": "168",
// 距离
"distance": "1km",
// 时间
"time": "20分钟"
},
...
]
}
}
显示最新X条产品信息
请求
{
// product/new
"method": "product.new",
// 参数
"param": {
// 唯一标识
"id": "1"
}
}
响应
{
// 响应方法
"method": "product/new",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 类型
// 终端根据类型切换到下一个展示页面
// 1、产品详情页;2、分类列表信息;3、关键词搜索
"type": "1"
// 成功信息
// 可以为空
"products": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg",
// 标题
"title": "三星屏幕",
// 区域
"area": "华强北",
// 价格
"price": "168",
// 距离
"distance": "1km",
// 时间
"time": "20分钟"
},
...
]
}
}
用户通过手机发布配件信息
请求
{
// one/publish
"method": "one.publish",
// 一键发布参数
"param": {
// 照片
"imgs": [
"http://xxx.com/1.jpg",
"http://xxx.com/2.jpg",
"http://xxx.com/3.jpg",
...
],
// 内容
"content": "i6总成 456",
// 价格
"price": "100",
// 地址/自动获取
"site": "深圳市福田区华强北",
// 经度
"longitude": "11.11",
// 纬度
"latitude": "22.22"
}
}
响应
{
// 一键发布响应
"method": "one.publish",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "发布失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"msg": "操作成功"
}
}
发布精准消息,包括类型、型号等
请求
{
// precise/publish
"method": "precise.publish",
// 精准发布参数
"param": {
// 分类
"classify": "手机配件",
// 品牌
"brand": "苹果",
// 型号
"model": "iPhone6",
// 照片
"imgs": [
"http://xxx.com/1.jpg",
"http://xxx.com/2.jpg",
"http://xxx.com/3.jpg",
...
],
// 内容
"content": "i6总成 456",
// 价格
"price": "100",
// 地址/自动获取
"addr": "深圳市福田区华强北",
// 经度
"longitude": "11.11",
// 纬度
"latitude": "22.22"
}
}
响应
{
// 一键发布响应
"method": "one.publish",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "发布失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"msg": "操作成功"
}
}
用户个人发布信息列表
请求
{
// product/user
"method": "product.user",
// 个人发布信息参数
"param": {
}
}
响应
{
// 响应方法
"method": "product.user",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"products": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg",
// 标题
"title": "三星屏幕",
// 区域
"area": "华强北",
// 价格
"price": "168",
// 距离
"distance": "1km",
// 时间
"time": "20分钟"
},
...
]
}
}
用户所有发布信息列表
请求
{
// product/list
"method": "product.list",
// 参数
"param": {
}
}
响应
{
// 所有发布响应
"method": "product.list",
// 错误值
"error": {
// 0: 成功;
// 3:提示用户信息;
"code": "0",
// 提示给用户看的信息,如果失败
"reason": "xx失败"
},
// 响应
"data": {
// 成功信息
// 可以为空
"products": [
{
// 根据ID查询详细信息
"id": "1",
// 图片
"logo": "http://xxx.com/i.jpg",
// 标题
"title": "三星屏幕",
// 区域
"area": "华强北",
// 价格
"price": "168",
// 距离
"distance": "1km",
// 时间
"time": "20分钟"
},
...
]
}
}