【问题标题】:correct HTTP Method to delete document property正确的 HTTP 方法来删​​除文档属性
【发布时间】:2018-10-16 09:45:32
【问题描述】:

我想删除一个文档的属性(在 monngodb 中)通过使用 sth。像 $pull/$unset。这个操作需要通过它自己的路由来处理。由于这条路线的目的是删除一个属性,我被困在 2 个 HTTP 方法 DELETE 和 PATCH 之间。

DELETE 用于删除整个文档,而 PATCH 主要用于修改现有属性。我的操作不知何故同时具有这两种属性,所以我想知道哪种 HTTP 方法更适合这种情况。我在网上找不到任何描述或讨论。很高兴听到你们的消息

【问题讨论】:

  • @Khang 是的,有点有助于更好地理解 PATCH 的幂等性,但没有关于属性的属性删除。所以这对我来说没有多大帮助

标签: mongodb http express


【解决方案1】:

这是一个相当主观的问题,但我认为它仍然值得一试。在我看来,你可以做任何一个,但你会想让你的请求看起来像选择的方法。

我个人会选择 DELETE,因此我会将 URI 定位到文档,然后是 docs 属性。这将有效地使您的文档属性看起来像文档本身。如果您有以下代表文章/博客文章的文档。

{
  "id": "abcdefg",
  "title": "My fantastic article",
  "content": "This is my fantastic article that you're reading",
  "author_username": "elliotblackburn",
  "topic": "wonder"
}

要删除整个文档,您可以请求 DELETE /articles/abcdefg 或删除您可能拥有的属性 DELETE /articles/abcdefg/topic,其中 abcdefg 代表文档 ID。

它都是同一个文档的事实是一个实现细节,但就用户而言,“主题”现在可以作为它自己的文档来操作。这并不要求您为该主题实现所有端点,但您可以选择。

【讨论】:

  • 我已经以这种方式实现了它,因为我也有相同的思考过程:)。这种方式对我来说似乎是合理的。
  • 你也可以用 PATCH 来做,但是问题变成了“我的 json 是什么样的?”到那时,您可能正在考虑执行 PUT 来替换整个对象,否定要删除的键,或者走一些 SOAP 路线,这当然是不平静的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 2015-07-18
  • 2017-07-24
  • 2019-05-27
  • 1970-01-01
相关资源
最近更新 更多