【发布时间】:2023-03-20 10:53:02
【问题描述】:
我有一个类似这样的发布路线:
router.post('/:name/book', function(req, res){
Booking.create(myNewBooking, function(err, booking){
if(err){ return next(err); }
//What am I supposed to do here? I usually do:
req.app.locals.booking = booking;
res.render('booking_success.jade');
});
});
问题:如果用户在执行此发布请求后刷新,他们会再次发送相同的数据。我不希望这成为可能。防止这种情况的最佳方法是什么?我想到了这个:
router.post('/:name/book', function(req, res){
Booking.create(myNewBooking, function(err, booking){
if(err){ return next(err); }
res.redirect('/booking-success');
});
});
router.get('/booking-success', function(req, res){
res.render('booking_success.jade');
});
这是要走的路吗?还是有更好的方法来做到这一点?
【问题讨论】:
-
是的,这是一种常见的模式。见en.wikipedia.org/wiki/Post/Redirect/Get
标签: javascript node.js post routing