首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rest API应该接受POST数组还是JSON字符串?

Rest API应该接受POST数组还是JSON字符串?
EN

Stack Overflow用户
提问于 2012-08-12 04:45:39
回答 5查看 17.8K关注 0票数 17

我一直在读一些REST教程,其中一些教程说,为了将数据发送到rest API,您应该以数组的形式发送post数据,如下所示:

代码语言:javascript
复制
$data = array('foo' => 'bar');
$rest->post($data);

还有一些人说你应该像这样发送JSON数据:

代码语言:javascript
复制
$data = array('foo' => 'bar');
$data = json_encode($data);
$rest->post($data);

不确定是否有一种标准的方法来做这件事,或者如果可以的话,但是在设计API时通常推荐什么?

编辑:似乎有些混乱。为了澄清,我同意JSON应该用于客户端消费,但这个问题是关于服务器消费的。这意味着服务器应该接受来自客户端的JSON或POST数据吗?

EN

回答 5

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2012-10-04 10:36:54

大多数时候,您可能希望坚持接收POST数据,但我认为接收json数据确实有其用途,例如,当涉及到批处理请求时。

Facebook API uses it

你不需要做file_get_contents('php//input')。在facebook文档中,你可以这样做:

curl -X POST "http://example.com/batch“-d 'batch={ "param”:1,"param2“:"2"}‘

然后在PHP代码中,如果您正在使用PHP,则可以通过$_POST参数获取它并执行json_decode。

代码语言:javascript
复制
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"
}
票数 1
EN

Stack Overflow用户

发布于 2012-08-12 04:47:08

JSON更有意义,因为它是独立于语言的,并且在API扩展时非常有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11917527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档