node.js - 将 Vs Post 放在 Node Js 中
问题描述
我现在正在尝试通过反应学习 NODEJS。
在正常情况下,编辑帖子的请求将是:
router.put("/:id", function(req, res) {
Campground.findByIdAndUpdate(req.params.id, req.body.campground, function(
err,
updatedCamp
) {
if (err) {
res.redirect("/campgrounds");
} else {
res.redirect("/campgrounds/" + req.params.id);
}
});
});
随着 put 请求。
但是我在 post 请求中看到了另一种语法,如下所示:
router.route("/update/:id").post((req, res) => {
Campground.findById(req.params.id).then(Campground => {
Campground.username = req.body.username;
Campground.description = req.body.description;
Campground.duration = Number(req.body.duration);
Campground.date = Date.parse(req.body.date);
Campground.save()
.then(() => res.json("Campground Updated"))
.catch(err => res.status(400).json(`Error` + err));
});
});
这两者有什么区别吗?
解决方案
不在代码本身中。差异只是逻辑上的差异。在 REST-Conventions 中,发出 POST 请求以创建新资源,而 PUT 请求则用于交换现有资源。
在您的第一个示例中,将更新现有资源 ID。在您的第二个示例中,更新被定义为资源本身。由于更新本身就是资源,因此您必须发布新的更新而不是 PUT。
如果你想使用 RESTful,你应该使用 put。但是这两个动词在语义上没有区别。
推荐阅读
- csv - jmeter的http请求中的动态searchParameters
- node.js - Prometheus DB 获取 Api 调用,如何获取最近 15 分钟的数据?
- csv - 如何在 vue.js 中创建 CSV 文件
- opencv - opencv solvePnP 坐标系
- html - 如何在 AMP 页面中添加自定义 CSS 和脚本
- doctrine-orm - 学说 loadClassMetadata
- javascript - 按孩子的孩子排序数组
- imagemagick - 如何配置 imagick 以使用 gpu 支持?
- swift - 三元运算中的“表达式类型'Bool'在没有更多上下文的情况下是模棱两可的”
- postgresql - QueryDSL GroupBy 和 Sum