的X WWW窗体-urlencoded Vs的JSON HTTP POST(x-www-form-u

2019-06-25 22:51发布

这是很难决定,
我目前正在发送数据的X WWW的形式,进行了urlencoded用php的lib卷曲带

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->arguments));

要么

curl_setopt($curl, CURLOPT_POSTFIELDS, $this->arguments);

第一个问题:第二个似乎是更大的内容长度,第一个解决方案可能是更好?

它是扁平状的消息实用:

{
    "name": "John",
    "token": "2121232145",
    "code": "7",
    "data": "Hello"
}

但我也有一个代表对象的数据字段,在这种情况下,我enconding,但这样做(编码一个JSON URL)是非常详细的和丑陋的消息,

在另一侧上我试图发送它作为应用/ JSON内容类型

curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($this->arguments));

内容长度是小消息,但与嵌入式JSON更大,这显然更好

但X WWW的形式,进行了urlencoded也接近形式的数据我需要发送,当一个JSON是嵌入式除

它不会是优雅有2型动物的servlet解析方法取决于内容类型,所以是有另一种选择?

Answer 1:

在这里 ,你可以阅读的格式类似的讨论。

如果编码数据的结构被保证是名称 - 值对的平面列表,X WWW的窗体-urlencoded似乎足够。 如果该结构可以是(任意)配合物(例如,嵌套列表或关联数组),则肯定使用JSON。

至于我,我是KISS娴熟。 在你的情况JSON / XML /无论是在时间,内存和CPU周期的额外费用。 X WWW的形式,进行了urlencoded的数据相结合的可读性和紧凑,所以我可以打赌,这是你的选择。



Answer 2:

X WWW的形式,进行了urlencoded和JSON是不同的东西。 而X WWW的窗体-urlencoded简单地默认其用于将形式提交给服务器的内容类型,JSON是基于文本的,并且用于序列化和通过网络连接发送的结构化数据的人类可读的格式(标准)。 你不应该对它们进行比较。

第二个似乎是更大的内容长度,第一个解决方案可能是更好?

没有,没有标记为“好”的解决方案。 就像pinepain的说,它实际上取决于什么样的数据,你发送和如何解析/处理它。 JSON非常适合与发送请求的额外数据。

不要去想内容长度。 想想要发送和处理它的数据和数据结构。 如果你只是想发送和处理结构化的请求和数据大小会有所不同,简单地使用JSON之间的数据。 它的建成,对于这一点。

两种方法之间的内容长度差不会的问题一部分,因为你的应用程序不是Facebook,Twitter或谷歌一样的怪物。 过早的优化是一切罪恶的根源。



文章来源: x-www-form-urlencoded Vs json HTTP POST