api - 用于添加/删除数组元素的 RESTful API 端点?

标签 api http mongodb rest

我在 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)中添加或删除项目。它再次起作用,但你不爱它。

我认为您正在寻找一种方法来模拟向数组添加和删除项目:

  1. 我会将数组单独建模为资源:/users/:id/items
  2. 接受 POST 将项目添加到数组并接受 DELETE 以从数组中删除。

简单且 RESTful。

关于api - 用于添加/删除数组元素的 RESTful API 端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370387/

相关文章:

javascript - TypeError : this. state.users.map 不是函数 reactjs

ruby-on-rails - 什么是套接字劫持?

docker - 为什么我无法通过 Docker 访问 NiFi 流的开放 HTTP 端口?

mongodb - 列表查询中至少有一个匹配项

php - 如何为 mongodb 设置默认提交选项?

java - IKVM - 无法将 jar 转换为 dll

python - 使用 API 从 Goodreads 获取文本评论

node.js - 如何使用微软认知 API 进行语音转文本?

javascript - 在 Firefox 中修改 HTTP 响应 header

mongodb - 多个集合作为hadoop mapreduce作业的mongodb的输入