首页 > 解决方案 > Mongoose Delete 和 Express app.delete 有什么区别

问题描述

我正在学习 NodeJS 并使用 MongoDB 作为数据库(猫鼬进行交互)。我正在做的当前课程只是使用猫鼬方法来“删除”和“更新”,并使用 Express 发出“发布”请求来做到这一点。IE:

app.post("/delete", function(req, res){
  //do something
  Item.findByIdAndRemove(item, function(err){
  })
})

但是,如果您查看他们建议使用的 Express 基本路由文档:

app.delete('/item', function (req, res) {
  res.send('Got a DELETE request at /item')
})

我知道一切都应该是 RESTful 并且使用 POST 请求发出 DELETE 请求可能会导致问题,但在这种情况下,它们是否都完成了同样的事情?对不起,如果这个问题是新手或难以理解,这只是我今天阅读一篇关于 REST 的文章时注意到的。

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


使用app.delete, 而不是更好的做法app.post,因为它反映了端点所做的事情的性质。在下面的代码中更容易看到你想删除一个项目:

app.delete("/item", (req, res) => { /* Delete item */ });

但是 POST 请求用于将新项目发布到存储中 - 所以不太清楚。唯一的其他常规方法是使用 URI 中方法名称的 GET 请求(有关不良 RESTful API 实践,请参阅此视频,包括此)。

app.get("/delete-item", (req, res) => { /* Delete item */ });

推荐阅读