Skip to content

Instantly share code, notes, and snippets.

@viney
Last active August 29, 2015 14:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save viney/65ab53db451aff79c881 to your computer and use it in GitHub Desktop.
Save viney/65ab53db451aff79c881 to your computer and use it in GitHub Desktop.

目录

APP 终端-服务器协议

版本


v0.0.1

提示


本文为markdown格式文本,可使用beyond compare或类似工具比较版本间的修改。

改动时请拉取最新代码进行改动(推荐),或者在git.oschina.net对应文件下进行编辑。

不要用空格缩进,而应该用tab缩进。

更改


  • 2015/06/29, viney, 0.0.1

    • 手动注册

    • 一键发布

数据传输


流程

手机请求:json请求消息-->http post 请求-->服务器

服务器响应:json响应消息-->http response 响应-->终端

Json

消息格式为Json,

参考:http://www.json.org/json-zh.html

Post键值

request=请求数据

Http Head

服务器注意需要处理Content-Type为空的情况,

因为这种情况下IIS默认的http流程无法正常解析。

服务器地址

开发:http://applet.test.bixiuke.me

正式:http://applet.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广告

请求

{

    // 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分钟"

            },

            ...

        ]

	}

}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment