使用POST从DB中检索指定的项目
use POST to retrieve specified item from DB
想象一下这个场景,我想更新一本书的细节。所以我应该有那本书的id,我确实喜欢这个
router.get('/edit/:book_id', function(req, res) {
Products.getBookById(req.params.book_id, function(err,product){
//render
});
});
<a href="edit/3434050348984585646">update this book</a>
我完成了,我的流程是正确的,但我唯一担心的是url不好,比如localhost:8000/books/update/33434050348984585646
如何隐藏url?在我的情况下如何使用POST?
从路线定义中删除:bookId
,并将链接更改为表单:
JS-
router.get('/edit', function(req, res) {
Products.getBookById(req.params.book_id, function(err,product){
//render
});
});
HTML
<form action="edit" method="post">
<input type="hidden" name="book_id" value="3434050348984585646">
<input type="submit" value="Update this book">
</form>
另一种选择是使用众所周知的POST/Redirect/GET模式(其优点是可以防止双重POST)。
其优点是,您不必使用URL参数(这很可能会对安全性产生影响),也不必处理隐藏的表单字段。
所以你像往常一样收到POST,在处理完参数后,你会向客户端发送一条重定向消息,代码为302 "Found"
,或者(首选)为303 "See Other"
和你想要重定向的URL。而发送302可能会导致客户端使用GET而不是原始请求方法来调用你重定向到的URL(通常是这样),303代码明确指示客户端使用GET而不管原始请求方法是什么。
相关文章:
- 正在将数据主题添加到所有项目
- 使用JSP从服务器检索和显示图像
- 通过Magento的网络服务检索运费
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 使用ASP.NET将谷歌地图添加到项目中,并从数据库中检索位置
- Firebase-正在从推送项目中检索数据
- 检索当前日期之后的项目
- 解析 - 仅检索具有匹配 ACL 的项目
- 将项目吐到不同的数组中并将其检索回来
- 如何存储拖动&将项目放入cookie,然后在另一个页面中检索
- 使用POST从DB中检索指定的项目
- 如何从Google Apps脚本项目属性中存储和检索对象
- 按顺序从chrome.storage检索多个项目
- Meteor仅为集合中的所有项目检索一个图像
- 剑道组合框检索选定项目与虚拟
- 在$http上检索数组并在离子列表的离子项目中查看
- 如果存在数组的元素,则从 mongodb 集合中检索项目(meteor js)
- Dojo拖放:如何检索项目的顺序
- 函数从SP上的列表中检索项目
- 如何使用“this”从选定项目检索id