javascript - 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 的文章时注意到的。
解决方案
使用app.delete
, 而不是更好的做法app.post
,因为它反映了端点所做的事情的性质。在下面的代码中更容易看到你想删除一个项目:
app.delete("/item", (req, res) => { /* Delete item */ });
但是 POST 请求用于将新项目发布到存储中 - 所以不太清楚。唯一的其他常规方法是使用 URI 中方法名称的 GET 请求(有关不良 RESTful API 实践,请参阅此视频,包括此)。
app.get("/delete-item", (req, res) => { /* Delete item */ });
推荐阅读
- node.js - Node.js:Jest + redis.quit() 但打开句柄警告仍然存在
- r - 使用 R 测试一阶随机优势
- python - 在python中更改输出语句
- json - 如何在 ionic 应用程序中使用 chart.js 中的 json 数据
- javascript - Typescript Observables http.post 和 http.get 处理问题
- javascript - 如何获取子数据
- android - 重定向而不调用 onPageStarted
- redux-saga - 使用 redux-saga-test-plan 模拟操作负载
- objective-c - iOS12 上的 CGImageCreate 和 CGColorSpaceCreateDeviceGray
- javascript - React 计算器:限制输入数量