获取具有在Node / Express中传递的不同数据的相同URL的方法

时间:2018-05-04 07:02:11

标签: javascript node.js rest express web

所以,我试图在不同的场景下为同一个URL获取不同的数据。这是我的代码。

第一种情况:

app.get('/upload', function(req, res) {
    res.render('upload', {data: 'a'});
});

第二种情况:

res.redirect('/upload');
app.get('/upload', function(req, res) {
    res.render('upload', {data: 'b'});
});

但是,出于某种原因,它总是执行第一种情况(仅传递数据:' a')。如何针对特定情况确定每个get方法的优先级?

1 个答案:

答案 0 :(得分:1)

首先,你不能为两个不同的工作使用相同的字符串名称。

你可以用params或查询来做到这一点。我为你创建了一个带params的例子。您可以更改场景的开关案例。

<强> PARAMS

app.get('/upload/:scenario', function(req, res) {
  let resultData = {};
  switch (req.params.scenario) {
    case '1':
      resultData = {
        data: 'a'
      };
      break;
    case '2':
      resultData = {
        data: 'b'
      };
      break;
    default:
      resultData = {
        error: 'wrong id'
      };
  }
  res.render('upload', resultData);
  // http://localhost/api/upload/1 -> {"data":"a"}
  // http://localhost/api/upload/2 -> {"data":"b"}
});