Zunächst habe ich versucht, die router.post
und router.get
Methoden zu verwenden und sie in meinem Code getrennt haben.Senden Sie dieselben Daten zur Ansicht in POST und GET in node.js/Express.js
Dann entschied ich mich router.all
, und in derselben Funktion POST
und GET
trennen und res.render
und ein gemeinsames Objekt mit dem Bildschirmtextsystem sie beide teilen verwenden, um zwei zu verwenden, da sie den gleichen Bildschirm geladen werden.
Ich frage mich, ob dies ein guter Ansatz es ist und wie dies in der Regel in node.js/Express.js getan:
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);
}
});
Ich schlage vor, es getrennt zu halten, da ich meistens Menschen gesehen habe, die Methoden auf bestimmten Routen explizit definieren und ihre Rückrufe oder Anwendungsfälle definieren. Wenn Sie 'router.all' verwenden, ist diese bestimmte Route für alle HTTP-Methoden verfügbar. Die Verwendung von und if-else in diesem einen Callback macht Ihren Code schmutzig. –
Was würden Sie mit den gemeinsamen Daten machen? Eine Middleware? Eine Funktion? Ist das nicht auch schlechter in Bezug auf die Lesbarkeit? – Alvaro
Sie können eine Middleware oder Funktion verwenden, die am besten zu Ihnen passt. Ich persönlich benutze Middleware. –