提问者:小点点

如何区分两条参数相同的get路由?


我有两条路线。

app.get('/api/v1/bucket/:bucket_name', (req, res) => {

  queries.getAllFilesFromSpecificBucket(req.params.bucket_name).then(data => {
    res.json(data);
  });
})

app.get('/api/v1/bucket/:file_name', (req, res) => {
  queries.getSpecificFileByName(req.params.file_name).then(data => {
    res.json(data);
  });
})

除了参数名之外,它们的路径是相同的api/v1/bucket/。这里,我的问题是,当我尝试使用file_name参数获取路由时,总是使用bucket_name参数调用第一条路由。 请帮帮忙


共1个答案

匿名用户

简单的答案是只需更改一条api路由。 另一种选择是组合路由并使用查询参数

app.get('/api/v1/bucket/:name', (req, res) => {
  if (req.query.bucket === "true") {
   //DO bucket logic
  } else {
  // DO file logic
  }
})

要使其工作,您需要将前端路由更新为如下所示

const getBucket = `/api/v1/bucket/${bucketName}?bucket=true`
const getFile = `/api/v1/bucket/${fileName}?bucket=false` // NOTE you can just remove the ?bucket=false from this line