服务器接口json格式的数据协议
来源:互联网 发布:无印良品淘宝正品店铺 编辑:程序博客网 时间:2024/06/06 00:57
今天给大家介绍一下我觉的比较好的CS架构数据通讯时数据格式,这里讲下json格式的定义
json格式的优点(摘自网络)
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;
E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
目的是为了满足app展示和交互的业务,下边我来说下我之前的方案
json通用字段说明:
code:为服务器自定义的响应码
mes:对code的描述,一般对错误的响应码进行描述,方便调用者处理不同种错误情况
data:数据体
一、json格式
1)一条数据:
{“code”:200,”mes”:”“,”data”:{}}
例如:login接口 成功: {"code":200,"mes":"","data":{"user":{"id":"111111","name":"张三"...},"access_token":"token"}} 失败: {"code":200,"mes":"server error","data":{}} 2)多条数据: {"code":200,"mes":"","data":[{},{}]} 例如:新闻列表接口 {"code":200,"mes":"","data": [{"id":"000000","title":"国庆节","content":"今天国庆节!","time":"2015-10-1 18:00:00"}, {"id":"000001","title":"春节","content":"今天春节!","time":"2015-1-1 00:00:00"]}} 失败: {"code":200,"mes":"server error","data":{}}
二、数据列表分页策略
1)按照时间排序:new -> old
例如新闻列表接口
入参为timeStamp(时间戳,1970年到目前的毫秒数),pageSize(一页显示条数)
第一页数据:timeStamp=0
other数据:timeStamp=(此处传入最后一条新闻的时间戳)
字段说明:"page":{"pageCount":50,"pageNum":2,"pageSize":10,"newCount":5} pageNum:当前第几页 pageSize:一页显示条数 newCount:新增加载的条数 成功: {"code":200,"mes":"","page":{"pageCount":50,"pageNum":2,"pageSize":10,"newCount":5},"data": [{"id":"000000","title":"国庆节","content":"今天国庆节!","time":"2015-10-1 18:00:00"}, {"id":"000001","title":"春节","content":"今天春节!","time":"2015-1-1 00:00:00"}]} 2)传统的web页面分页方式 例如新闻列表接口 入参:pageNum(当前页数),pageSize(一页显示条数),id(新闻id) 注意:只所以传id,因为pageCount是一直变的(对于后台新增新闻记录的场景) 第一页数据:pageNum=1,pageSize=10 第二页数据:pageNum=2,pageSize=10,id="000000" 字段说明:"page":{"pageCount":50,"pageNum":2,"pageSize":10,"newCount":5} pageNum:当前第几页 pageSize:一页显示条数 newCount:新增加载的条数 成功: {"code":200,"mes":"","page":{"pageCount":50,"pageNum":2,"pageSize":10,"newCount":5},"data": [{"id":"000000","title":"国庆节","content":"今天国庆节!","time":"2015-10-1 18:00:00"}, {"id":"000001","title":"春节","content":"今天春节!","time":"2015-1-1 00:00:00"}]}
三、数据面向对象化json(可以重用javabean)
新闻详情
Bean:
NewsDetailBean:
private String id;
private String author;
private String title;
private String content;
private long timeStamp;
private NewsTypeBean type;
NewsTypeBean: private String id; private String name; {"code":200,"mes":"","data": {"id":"dfd3a1f78944","author":"晴天霹雳","title":"今天天气如何?","content":"今天晴天!","timeStamp":1446445053350, "type":{"id":"ae6df4bc329b","name":"生活"}}}
四、错误统一处理
1)server 内部异常
code=500 mes=”…….”
2)token过期或者被T下线
token过期:code=403 mes=”登录超时,请重新登录验证”
被T下线 :code=402 mes=”您的账号在别处登录,为了您账号安全,请尽快修改密码” (两种通知方式:用户主动请求或者push下线消息)
五、优化传输
可通过gzip进行压缩传输
两种请求方式get or post
GET(多数适用于查询请求)
参数拼接的方式请求
例如:http://www.alfox.com/api/v1/findFourmList?pageNum=1&&pageSize=10
POST(适用于提交数据到服务器请求)
推荐用json格式传输
{“author”:”晴天霹雳”,”content”:”今天晴天!”,”title”:”今天天气如何?”,”typeId”:”ea59ebee-b4d1-4cf9-a0d7-7be9a4f890c6”}
- 服务器接口json格式的数据协议
- 手机App通过http协议从web服务器上获取json格式的数据
- Socket开发探秘--基于Json格式的数据协议收发
- Socket开发探秘--基于Json格式的数据协议收发
- 移动应用API常用的JSON数据协议格式
- 请求第三方接口返回json格式数据的解析
- JSON API免费接口 各种提供JSON格式数据返回服务网站的API接口
- 客户端POST提交、服务器返回json格式数据的demo
- AFNetworkin POST Json格式的数据到服务器
- MyEclipse作为服务器连接数据库输出json格式的数据
- Android笔记:向服务器提交JSON格式的数据
- LR 测试http协议xml格式数据的服务器
- JSON 格式的数据
- JSON格式的数据
- json格式的数据
- 接口返回值 Json格式数据
- 通信接口封装json、XML格式数据
- jmeter如何测试json格式数据接口
- 计算机网络--七层协议/五层协议
- LeetCode 78 Subsets (DFS 或 状态压缩)
- Oracle like使用索引
- js 指定日期加一天
- iOS国际化
- 服务器接口json格式的数据协议
- IDOC-接收端异常(MATMAS)
- easyui datagrid load 参数表单序列化
- Rstudio中出现中文乱码
- 一个成功的BI项目实施需要注意哪些?
- View中的draw和onDraw有什么区别
- 新建json转化为string,访问网络获得返回值
- 函数指针和指针函数的区别?
- Linux swap分区大小问题