我一直在研究/创建一个REST api,在backbone.js到php上下文中。REST API请求方法输入参数
我明白HTTP动词的概念,并当他们应使用
GET - select
POST - create
PUT - update
DELETE - delete
我也明白传递一个标识符的概念作为语义网址,例如
GET http://api/users/123
DELETE http://api/users/123
在这些情况下, “123” 是id的业务逻辑将使用获得/删除用户。
但是POST和PUT上下文呢?发送请求时
PUT http://api/users/123
的API将更新用户ID 123提供的参数,这里就是我的问题出现了。
我会假设输入参数更新将作为PUT参数发送。在PHP语法中,这表示为:file_get_contents('php://input')
(这与删除请求相同)。
当通过backbone.js测试此功能时,它的工作原理完美。
但是当我尝试并用
POST http://api/users/
创建一个新元素i将假设输入值将发送作为POST参数/ PHP中语法这被表示为$_POST
。但这不起作用。
经过一番测试,并阅读了Rails风格的REST API(这是骨干文档建议的),我意识到所有请求变量都以相同的方式发送。如果我更改我的代码以使用file_get_contents('php://input')
来获取每个请求类型的请求参数,则主干网完美无缺。
这是REST API的标准公平吗?或只是“轨道风味”的?
我也想知道这一点。在我看来,对于请求或响应主体的格式,REST风格的API中没有任何真正的标准,而且我所看到的关于构建REST API的许多内容基本上掩盖了这个问题。我通常在请求和响应主体中使用纯JSON编写它们,而不是表单编码。 – Troy