我在 MongoDB 存储之上构建了 RESTful API,因此您可以存储数组真是太好了。像这样创建新资源很简单:
POST/users
{
项目: [
1001、1002、1003
]
}
但是用于添加新项目或删除项目的 HTTP 端点会是什么样子?
现在,我必须指定整个数组,包括我不想触摸的元素:
PATCH/users/{id}
{
名称:“布鲁斯·韦恩”,
项目: [
1001, 1002
]
}
或者直接传入一个mongodb查询:
PATCH/users/{id}?query[$push][items]=1003
有没有更好的方法来做到这一点?
编辑:
我喜欢 StackMob's API可以。我如何更新 name
并同时从 items
中删除一个元素?例如,当我在管理仪表板上更新一堆用户的详细信息时?我认为在 mongodb 中替换整个数组不是一个好主意?
最佳答案
传递 mongodb 查询似乎是个坏主意。根据您的后端实现,它可能导致攻击者对您的数据做坏事,如 SQL Injection
您可以使用 PUT 或 PATCH 对资源上的属性修改进行建模,但有一些限制:
- 当使用
PUT
时,客户端应该发送资源的完整表示。 IT 适合您,但可能很麻烦。 - 当使用
PATCH
时,客户端应该发送要更改的属性,而不是整个资源。然而,您必须发送整个值(value),而不仅仅是向值(value)中添加或删除项目。它再次起作用,但你不爱它。
我认为您正在寻找一种方法来模拟向数组添加和删除项目:
- 我会将数组单独建模为资源:
/users/:id/items
- 接受
POST
将项目添加到数组并接受DELETE
以从数组中删除。
简单且 RESTful。
关于api - 用于添加/删除数组元素的 RESTful API 端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370387/