我有一个用于不同目的的Express API端点,但是一个单个端点的结果是所有端点的结果。例子。 api/:id
返回ID。 api/:id?region=east
返回{区域:" 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个更新
您可以使用单一路由而不是进行两种不同的路线,您只需要在请求中检查查询字符串。
router.get('/:id', (req,res) =>{
let id = req.params;
let region;
if(req.query){
region = req.query.region;
}
return res.json(id);
});