HTTP POST正文的MIME与JSON



我们有一个HTTPRPCAPI,所有参数都将使用JSON进行编码。这是可行的,但在http帖子的正文中混合使用MIME x-www-form-urlencoding和JSON并不是很优雅。也就是说,身体可能看起来像这样:

POST /my/rpc/api/endpoint
foo={"x":123,"y":true}&bar=[1,2,3,4,5,6,7]

我见过一些服务根本不使用MIME,而是使用完整的json编码。例如:

POST /my/rpc/api/endpoint
{"foo":{"x":123,"y":true},"bar":[1,2,3,4,5,6,7]}

我认为后一种解决方案看起来更干净,但我不太确定这是否违反了HTTP约定,以及这会产生什么影响。这是要避免的吗?例如,这会使实现客户端变得更加困难吗?

在POST负载中使用JSON没有错。重要的是使用正确的互联网媒体类型,即"application/json",而不是"application/x-www-form-urlencoded"。

以x-www-form-urlencoded传递的数据被视为字符串。话虽如此,你可以随心所欲地处理字符串。如果您有一个格式正确的字符串,可以对JSON进行编码和解码,那么它将非常好地工作。如果您有一种简单的方法来查看文章正文,那么只需提取JSON字符串即可。

使用PHP,我实际上不知道如何查看主体,所以我必须做这样的事情:

json='{"foo":{"x":123,"y":true},"bar":[1,2,3,4,5,6,7]}'
//php
$json = json_decode($_POST['json']);

相关内容

最新更新