很难决定,
目前我发送数据为x-www-form-urlencoded与php lib curl with
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"
}
但是我也可以有一个代表一个对象的数据字段,在这种情况下我正在考虑它,但这样做(url编码一个Json)是非常冗长和丑陋的消息,
另一方面,我尝试将其作为application / json content-type
发送curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($this->arguments));
对于小消息,内容长度更大但是嵌入了json,显然更好
但x-www-form-urlencoded也接近我需要发送的表单数据,除非嵌入了json
根据内容类型,拥有2个不同的servlet解析方法并不优雅,那么还有另一种选择吗?
答案 0 :(得分:11)
Here您可以阅读有关格式的类似讨论。
如果编码数据的结构保证是一个平面列表 名称 - 值对,x-www-form-urlencoded似乎就足够了。如果 结构可以(任意)复杂(例如嵌套列表或 关联数组),然后肯定使用JSON。
至于我,我是KISS娴熟的。在您的情况下JSON / XML /无论是时间,内存和CPU周期的额外成本。 x-www-form-urlencoded数据结合了可读性和紧凑性,所以我敢打赌它是你的选择。
答案 1 :(得分:8)
x-www-form-urlencoded和JSON是不同的东西。虽然x-www-form-urlencoded只是用于将表单提交给服务器的默认内容类型,但JSON是基于文本和人类可读的格式(标准),用于通过网络连接序列化和发送结构化数据。你不应该比较它们。
第二个似乎是更大的内容长度,第一个解决方案是 可能更好吗?
不,没有标有“更好”的解决方案。就像pinepain所说,它实际上取决于你发送什么样的数据以及如何解析/处理它。 JSON非常适合发送带有请求的附加数据。
不要考虑内容长度。考虑要发送和处理的数据和数据结构。如果您只想在请求之间发送和处理结构化数据,并且数据大小各不相同,只需使用JSON即可。它是为此而建的。
两种方法之间的内容长度差异不会成为问题的一部分,因为您的应用不是Facebook,Twitter或谷歌怪物。过早优化是万恶之源。