我正在学习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的文章时注意到的。
答案 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,但是它是不同的请求,因此您可以使用不同的响应。