Экспресс-маршрут с /? - PullRequest
       2

Экспресс-маршрут с /?

0 голосов
/ 30 октября 2018

Я хочу направить 2 разных запроса.

  1. /api/heroes/:id
  2. /api/heroes/?name=

Итак, используя nodejs и express, я пишу сервер для обработки этого запроса. Для обработки первого запроса я пишу ниже код:

app.get('/api/heroes/:id', jsonParser, function (req, res) {

Для обработки второго запроса я пишу так:

app.get('/api/heroes/name', jsonParser, function (req, res) {

Но только первая ручка работает как положено. 2-й запрос обрабатывается:

app.get('/api/heroes', jsonParser, function (req, res) {

Как изменить код, чтобы второй дескриптор мог работать?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Это то, что ожидается:

Для параметров запроса /api/heroes/?name= обрабатывается

app.get('/api/heroes', jsonParser, function (req, res) {

Что вы можете сделать, это проверить, является ли req.query.name значение undefined, затем действовать как обычно или действовать с запросом. Использование условия if...else.

/api/heroes/name является конечной точкой с name.

Вы можете различить, если хотите, как показано ниже:

app.get('/api/heroes/name/:text', jsonParser, function (req, res) {
0 голосов
/ 30 октября 2018

Если я правильно понял ваш вопрос, то, вероятно, вы спрашиваете, почему req для /api/heroes/?name= обрабатывается /api/heroes.

Вы пытаетесь отправить параметр строки запроса во втором требовании, который будет обработан маршрутом /api/heroes. Вы получите параметр строки запроса в req.query объекте.

Итак, ваш первый обработчик запросов будет работать для URL - /api/heroes/:id (например, - / api / heroes / 123) следующим образом:

app.get('/api/heroes/:id', function (req, res) {
  var id = req.param.id
}

и для 2-го запроса: /api/heroes?name= (например, - / api / heroes? Name = abc)

app.get('/api/heroes', function (req, res) {
  var name = req.query.name
}

См. Здесь req.query

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...