Mongoose Delete和Express app.delete有什么区别

时间:2019-06-28 00:36:44

标签: javascript node.js mongodb express mongoose

我正在学习NodeJS并将MongoDB用于数据库(猫鼬进行交互)。我目前正在做的课程仅是使用猫鼬方法“删除”和“更新”,并使用Express发出“发布”请求。即:

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的文章时注意到的。

2 个答案:

答案 0 :(得分:2)

使用app.delete而不是app.post是更好的做法,因为它反映了端点所做工作的性质。可以很容易地看到要删除以下代码中的项目:

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

但是使用POST请求将新项目发布到存储中-因此不清楚。唯一的其他常规方法是将GET请求与URI中的方法名称一起使用(有关不良的RESTful API实践,请参见this video,包括该方法)。

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

答案 1 :(得分:1)

POST用于将数据添加到数据库,而DELETE则从数据库中删除项目。它可以使代码更清晰,并且在邮递员中很有用,因为您可以使用相同的URL,但是它是不同的请求,因此您可以使用不同的响应。