我一直在读一些REST教程,其中一些教程说,为了将数据发送到rest API,您应该以数组的形式发送post数据,如下所示:
$data = array('foo' => 'bar');
$rest->post($data);
还有一些人说你应该像这样发送JSON数据:
$data = array('foo' => 'bar');
$data = json_encode($data);
$rest->post($data);
不确定是否有一种标准的方法来做这件事,或者如果可以的话,但是在设计API时通常推荐什么?
编辑:似乎有些混乱。为了澄清,我同意JSON应该用于客户端消费,但这个问题是关于服务器消费的。这意味着服务器应该接受来自客户端的JSON或POST数据吗?
发布于 2012-08-12 04:57:46
您应该考虑将使用API的客户端。HTML5\AJAX客户端可能需要JSON数据,而其他客户端(Silverlight或原生移动应用程序)可能更擅长使用XML。
编写REST API的一个很好的框架\平台就是微软的Web (基于ASP.NET MVC)。该产品继承了WCF框架,允许用户在MVC环境中编写REST API。它的一个功能是根据HTTP Accept标头选择序列化提供程序。
因此,如果客户端接受application/json,则它们使用JSON中的服务;如果接受XML,则它们使用XML中的服务。您还可以编写自己的对象序列化程序并将其插入到框架中。
更多信息:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/video-your-first-web-api
发布于 2012-10-04 10:36:54
大多数时候,您可能希望坚持接收POST数据,但我认为接收json数据确实有其用途,例如,当涉及到批处理请求时。
你不需要做file_get_contents('php//input')
。在facebook文档中,你可以这样做:
curl -X POST "http://example.com/batch“-d 'batch={ "param”:1,"param2“:"2"}‘
然后在PHP代码中,如果您正在使用PHP,则可以通过$_POST参数获取它并执行json_decode。
var_dump($_POST);
array(1) {
["batch"]=>
string(30) "{ "param" : 1, "param2" : "2"}"
}
var_dump(json_decode($_POST['batch'], true));
array(2) {
["param"]=>
int(1)
["param2"]=>
string(1) "2"
}
发布于 2012-08-12 04:47:08
JSON更有意义,因为它是独立于语言的,并且在API扩展时非常有用。
https://stackoverflow.com/questions/11917527
复制相似问题