表达参数和api端点

时间:2019-07-03 19:48:16

标签: javascript node.js express

我有一个用于不同目的的快速api端点,但是只有一个端点返回所有端点的结果。 例。 api/:id返回ID。 api/:id?region=east返回{region:“ east”} 我知道在第一种情况下我们使用req.params,第二种情况下我们使用req.query。 我的问题是两个电话都只返回第一种情况。 我该如何解决?

样本code app.js file

const express = require('express');
const app = express();

app.use(express.json());
app.use(express.urlencoded({extended:false}));
app.use('/api', require(./server/user.js));

const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Listening on port ${port} `));

#user.js file

const express = require('express');
const router = express.Router();

//endpoint api/10
//ie 10 is the id
router.get('/:id', (req,res) =>{
   let id = req.params;
  return res.json(id); 
});

//note the second router should be using query string
//ie api/10?region=east
router.get('/:id', (req,res) =>{
   let id = req.params;
  return res.json(id); 
});

我的问题是第二个api端点不起作用。它执行第一个api端点。

1个以上更新

1 个答案:

答案 0 :(得分:0)

您可以使用一条路由,而不用创建两条不同的路由,您只需要检查请求中的查询字符串,如下所示。

router.get('/:id', (req,res) =>{
   let id = req.params;
   let region;
   if(req.query){
     region = req.query.region;
   }
   return res.json(id); 
});