我一直在研究/创建一个REST api,在backbone.js 到php 上下文中。
我了解 HTTP 动词的概念以及何时应该使用它们
GET - select
POST - create
PUT - update
DELETE - delete
我也理解将标识符作为语义 url 传递的概念,例如
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/
我会假设输入值将作为 POST 参数/在 php 语法中发送,这表示为$_POST
. 但这不起作用。
经过一些测试,并阅读了 Rails 风格的 REST API(这是主干文档所建议的),我意识到所有请求变量都是以相同的方式发送的。如果我更改我的代码以用于file_get_contents('php://input')
获取每种请求类型的请求参数,则骨干网可以完美运行。
这个标准对 REST api 公平吗?还是只是“铁路风味”的?