文档章节

为什么现在的接口设计都不用普通的POST传输数据了?

江边望海
 江边望海
发布于 2017/09/04 11:42
字数 554
阅读 64
收藏 0

疑问

我们看到,现在的很多开放接口已经抛弃了POST方法来传输数据,采用JSON方式基本上已经在业界达成共识了。那,这背后的原因是什么呢?

今天,江边望海来帮助大家整理一下。

1.json带类型

json传输是带类型的,你说的传统的POST是Content-Type:application/x-www-form-urlencoded,就表示虽然也按键/值传递了,但确实字符串,本来数据该有的类型被忽略了。

采用Content-Type:application/x-www-form-urlencoded势必要增加工作量,譬如:数据转型,类型校验等等

2.支持嵌套的数据格式

json类型的数据可以比较好的支持嵌套的数据格式,这种数据格式在后端可以和文档数据库(比如mongodb)的存储结构直接对应;在前端可以和js的数据对象直接对应。

打个比方,做一个简单的用户注册功能吧,包含了三个字段,用户名(string),密码(string),年龄(number)。如果使用Content-Type:application/x-www-form-urlencoded的传统方式,那么所有字段都将按照string传到服务器,那server端是不是就要多做一次数据转型?或者说,我们期望的数据类型,是不是被忽略了!?

3.安全

浏览器中的key=value&key=value是拼接在url上然后传递给server的,别说用的是POST请求,其实和GET没啥区别。虽然都能解决问题,但有优劣之分。
1.用KV连接URL,使得URL比较丑陋。
2.用KV连接URL,如果有敏感信息,存在安全问题。
3.用KV连接URL,长度有限制。
如果用JSON,可以使用request body发送数据,就回避了第一点第三点,第二点相对来说要好点。
JSON格式的数据现在比较通用,各种语言支持性都比较好。

4.后端

现在的接口开发,后端除了可以使用php以外,还可以使用nodejs、mongodb等,天然的支持json格式,可以少一些转换。

参考链接:https://segmentfault.com/q/1010000003015987

© 著作权归作者所有

江边望海
粉丝 28
博文 112
码字总数 57841
作品 3
郑州
技术主管
私信 提问
浅谈WebService SOAP、Restful、HTTP(post/get)请求

HTTP-GET 和 HTTP-POST HTTP-GET和HTTP-POST是标准协议,他们使用HTTP(超文本传输协议)谓词(谓词是指条件表达式的求值返回真或假的过程。)对参数进行编码并将参数作为名称/值对传递,还使...

zppiio
2015/01/09
26.3K
1
Web Service架构

SOAP协议:简单对象访问协议,技术有助于实现大量异构程序和平台之间的互操作性,根据我有限的了解,SOAP是把成熟的基于HTTP的WEB技术与XML的灵活性和可扩展性组合在了一起。比如我们.NET中的W...

旋转木马-千里马
2016/01/06
38
0
细说API - 重新认识RESTful

如果你是一个客户端、前端开发者,你可能会在某个时间吐槽过后端工程师的API设计,原因可能是文档不完善、返回数据丢字段、错误码不清晰等。如果你是一个后端API开发者,你一定在某些时候感到...

f8f814630cfc
01/16
0
0
表单传输后台乱码是什么原因?表单数据获取方法中get/post区别解析

在JSP传输数据时,不管是表单传输或者ajax操作,它们的method或者type都是get或者post,并且它们的默认传输编码为”ISO8859-1”.  1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议...

xc121566的博客
2017/12/11
0
0
Tlink物联网平台使用(四)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/D_Katter/article/details/83820627 1.对于协议的选择 不知道大家还记不记得这张图,我让你们选择协议的时候,...

D_Katter
2018/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部