我有一个端点,根据用户在网页上的选择为用户提供下载文件。但是,根据用户选择的可能性,我能想到的唯一方法就是使用if / else语句。
router.post('/process', function(req, res) {
if(req.query.os == 'Windows' && req.query.rec == 'Computer Information' && req.query.report == 'Local Report') {
res.send('http://localhost:3033/proc/windows/info/local/files.zip');
} else if (req.query.os == 'Windows' && req.query.rec == 'User Information' && req.query.report == 'Local Report') {
res.send('http://localhost:3033/proc/windows/uinfo/local/files.zip');
}
}
如果我为Linux或OSX添加选项,则不得不考虑这些选项,因此代码将变得非常冗长和丑陋。我有更好的方法来解释这个问题吗?
答案 0 :(得分:0)
您可以将变量转换为网址部分。它将更容易维护。例如:
router.post('/process', function(req, res) {
var url_parts = {
'os' : {
'Windows' : 'windows',
'Linux' : 'linux',
'OSX' : 'mac'
},
'rec' : {
'Computer Information' : 'info',
'User Information' : 'uinfo'
},
'report' : {
'Local Report' : 'local',
'Global Report' : 'global'
}
};
res.send(
'http://localhost:3033/proc/'
+ url_parts.os[req.query.os]
+ '/' + url_parts.rec[req.query.rec]
+ '/' + url_parts.report[req.query.report]
+ '/files.zip'
);
});