我有一个包含以下数据的表:
id position name
== ======== =========
1 4 Fred
2 2 Wilma
3 1 Pebbles
4 5 Barney
5 3 Betty
Run Code Online (Sandbox Code Playgroud)
这是供用户重新排列的列表(因此在位置列中)。我的问题是,我怎样才能轻松地做到这一点。例如,如果我想将Fred移到位置2,我将如何发送请求?
目前,我有这样的事情:
PUT /user/1/reorder/2
Run Code Online (Sandbox Code Playgroud)
这会将当前位于位置4的用户1(Fred)移至位置2。SQL代码还将运行查询,该查询将更改其他用户的位置以适应Fred的新位置。
正确的RESTful方法是什么?
执行此操作的正确 RESTful 方法是什么?
这个想法是,你的 API 是你的领域模型的伪装,这样它就可以假装成无聊的 Web 文档存储。
如果可能,您希望修改的 URI 与 的 URI 匹配GET,因为这样您就可以使用通用组件来管理客户端的缓存失效。
因此,如果您阅读具有类似请求的用户列表
GET /flintstones
Run Code Online (Sandbox Code Playgroud)
然后你想使用以下一种或多种想法来修改表示
POST /flintstones
PUT /flintstones
PATCH /flintstones
Run Code Online (Sandbox Code Playgroud)
对于 PUT 请求,正文中的表示可能只是重新排序的列表:
Pebbles
Fred
Wilma
Betty
Barney
Run Code Online (Sandbox Code Playgroud)
然后由您的实现来确定如何获取该文档并将其表达为一系列 SQL 调用。
但最终你不会得到带宽效率较低、数据库查询效率较低的结果吗?
对于大型文档的小编辑,PUT可能不是您的最佳选择。您也可以采用已放入 URL 中的相同信息,将其嵌入到补丁文档中,然后使用PATCHorPOST代替。
所以它可能是一个网络表单——我们将使用application/x-www-form-urlencode数据将表单条目传回服务器,以便它能够弄清楚要做什么。或者(对于交换 json 表示的情况,我们可以编写一个描述更改的JSON 补丁文档)。
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |