Первоначально я попытался использовать методы router.post
и router.get
и разделить их в моем коде.Отправить те же самые данные для просмотра в POST и GET в node.js/Express.js
Тогда я решил использовать router.all
, и в пределах одной и той же функции разделения POST
и GET
и использовать два res.render
и общий объект с ViewData они оба разделяют, так как она будет загружать тот же экран.
мне интересно, если это хороший подход к нему, и, как это обычно делается в Node.js/express.js:
router.all('/profile', function(req, res, next) {
var viewData = {
data1: Demo.getdata(1),
data2: Demo.getdata(2),
data3: Demo.getdata(3),
data4: Demo.getdata(4)
};
if (req.method === 'POST') {
request.get({
uri: res.locals.baseUrl + '/getData',
qs: {
param1: param1
}
}, function(error, response, body) {
if (error || response.statusCode != 200) {
viewData.message = 'There was a problem!!';
}
else{
var data = JSON.parse(body);
viewData.message = 'Good job!!';
viewData.moreData= data.moreData;
}
res.render('settings/profile', viewData);
});
}
else{
res.render('settings/profile', viewData);
}
});
Я предлагаю сохранить его отдельно, поскольку я видел в основном людей, которые явно определяют методы на определенных маршрутах и определяют их обратные вызовы или их использование. если вы используете 'router.all', этот конкретный маршрут будет доступен для всех методов http. Использование и if-else в этом обратном вызове сделает ваш код грязным. –
Что вы будете делать с общими данными. Межплатформенное ПО? Функция? Разве это не хуже с точки зрения удобочитаемости? – Alvaro
Вы можете использовать промежуточное программное обеспечение или функцию, которая всегда подходит вашему делу. Я лично использую посредников. –