现在的web开发,大部分请求都是http方式的请求。常用的格式有:xml,json,form表单,字节流
xml
xml请求现在用的很少,大部分的应用场景都能被json代替,可能在一些比较老的系统中才用到吧,比如java的Web Services;有些公司可能会将数据转换成xml,然后保存在本地;另外,微信的事件消息推送的是xml格式数据。
json
json格式的数据,体积小,灵活性好。对象和数组可以无限嵌套,特别是可以和js中的对象可以无缝链接
//拼接 x = {"a":1}格式的字符串,可以得到js的object的对象
eval("var x= {}");console.log(x)
//这种方式最常用
JSON.parse("{}")
另外new Function也可以解析json数据
form表单
form表单提交的方式分为两种,x-www-form-urlencoded和multipart/form-data,后者传输的时候可以传输二进制的文件
自从ajax兴起以后,x-www-form-urlencoded的请求方式就越来越少了,不过,还是有一些实用优势的:
- 可以将提交请求和页面跳转统一为一个步骤
- 可以实现文件下载,虽然a标签也可以实现下载,但是form表单支持post方式的文件下载
multipart/form-data主要用于多媒体文件的传输,也什么好说的,网上例子很多
字节流数据传输
在流量很珍贵的情况下,json这种轻量级的数据格式可能也不够用了。那还有没有一个字节流量都不浪费、用最少的流量传最多数据的方法了,答案是有的。
关系型表的数据存储逻辑就可以拿过来用,一张表包括表头的描述和表体的内容:
- 在传输数据的时候,表头只传一次,这样就节省了很多描述语言
[
["id","type_id","name","value","orderline","description"],
[1,1,"社交","1","1",null],
...
]
- 我们可以先约定好表头格式,开发者按照约定的文档进行开发即可,比如第1位字节表示什么,第2位表示什么
[
[1,1,"社交","1","1",null],
...
]
- 还有更变态的一种方法就是把多余的符号全部省略,不过这种方式对数据格式的约定非常严格,技术细节不讨论了,只列个例子吧
[
11社交11null,
...
]
当然,最后面这种方式传输的流量是最少的,缺点就是数据格式的文档定了以后,不太容易扩展,比如我要新增一个传输字段,或者某一个传输字段可能要消耗几百个字节变长字段,相当于数据库中的varchar,这个时候,我们可以用两个字段表示这个数据,一个字段用于描述(长度,含义),一个字段是这个数据的值。
就到此为止了。
网友评论