экспресс-параметры и конечная точка API - PullRequest
0 голосов
/ 03 июля 2019

У меня есть конечные точки экспресс-API для разных целей, но одна возвращает результаты для всех конечных точек.пример.api/: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 голосов
/ 04 июля 2019

Вы можете использовать один маршрут вместо двух разных, вам нужно будет просто проверить строку запроса в запросе, как показано ниже.

router.get('/:id', (req,res) =>{
   let id = req.params;
   let region;
   if(req.query){
     region = req.query.region;
   }
   return res.json(id); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...