req.query и req.param в ExpressJS

89

Основные различия между req.queryи req.paramв Express

  • Чем они отличаются друг от друга
  • Когда использовать, и в каких случаях

Предположим, что клиент отправляет, скажем, пару Android (ключ, значение) в запросе ... какой из них использовать?

[РЕДАКТИРОВАТЬ]

Предположим, что Android отправляет запрос POST -> Намерение состоит в том, чтобы отправить (ключ, значение) клиенту, а сервер должен выполнить запрос к базе данных на основе значения на сервере и вернуть ответ JSON

Посмотрите :: на этот вопрос для программы, на которую я ссылался :: Программа Simple Express для запроса результата

Уильям Джонс
источник
1
Вы имеете в виду req.queryи req.param?
arb
1
да ! ......... Я также изменил вопрос

Ответы:

115

req.query вернет объект JS после анализа строки запроса.

/ user? name = tom & age = 55 - req.queryдаст{name:"tom", age: "55"}

req.paramsвернет параметры в согласованном маршруте. Если ваш маршрут / user /: id и вы делаете запрос к / user / 5 - req.paramsдаст{id: "5"}

req.paramэто функция, которая извлекает параметры из запроса. Все это можно найти здесь .

ОБНОВИТЬ

Если это глагол a, POSTи вы используете его bodyParser, тогда вы сможете получить тело формы, с которым работаете req.body. Это будет проанализированная JS-версия POSTредактируемой формы.

вилка
источник
Спасибо, тогда. Предположим, что клиент отправляет пару Android (ключ, значение) в запросе ... Какой из них использовать в Express?
Невозможно ответить на этот вопрос, не увидев соответствующий запрос.
arb
Пожалуйста, посмотрите обновленный вопрос ... Я также упомянул ссылку на программу, которую я использую в экспресс-режиме, в одном из вопросов, которые я опубликовал ... Пожалуйста, добавьте обратную связь!
@Iplay, если этот ответ вам помог, отметьте его как ответ на этот вопрос. Спасибо.
arb
15

req.query- это строка запроса, отправленная на сервер, например /page?test = 1 , req.param- это параметры, переданные обработчику.

app.get('/user/:id', handler);, собираясь /user/blah, req.param.idвернется blah;

OneOfOne
источник
Спасибо, тогда. Предположим, что клиент отправляет пару Android (ключ, значение) в запросе ... какой из них использовать?
1
Понятия не имею, о чем вы говорите, если это запрос POST, он будет в req.data, если он GET, то будет вreq.param
OneOfOne
Привет, не могли бы вы рассказать мне, как проверить параметры req.params на undefined?
Arj 1411,
@AnandRaj, он будет просто пустым, так что проверьтеc.Param("id") == ""
OneOfOne
@OneOfOne, спасибо за ответ. Позвольте мне проверить и
Arj 1411,
14

Я бы предложил использовать следующие

req.param('<param_name>')

req.param ("") работает следующим образом

Поиск выполняется в следующем порядке:

req.params
req.body
req.query

Для ясности следует отдавать предпочтение прямому доступу к req.body, req.params и req.query - если вы действительно не принимаете ввод от каждого объекта.

Ссылка: http://expressjs.com/4x/api.html#req.param

Абхиджит Гайквад
источник
1
Привет, не могли бы вы рассказать мне, как проверить параметры req.params на undefined?
Arj 1411,
@AnandRaj, что вы имеете в виду под неопределенным? вы имеете в виду, что параметры не известны?
Abhijit
я имел в виду, когда проверил тип req.params, который показывает undefined. Моя цель - проверить, является ли req.params. <Any URI parameter> нулевым или нет
Arj 1411,
@AnandRaj, не могли бы вы опубликовать свой код? Для меня работает следующий код var express = require ('express'); вар приложение = экспресс (); app.get ('/', функция (req, res) {console.log (req.params); res.send (req.params);}); app.listen (3000);
Abhijit
@AnandRaj попробуйте if (reqParams.hasOwnProperty ('deviceType')) {}
Абхиджит
9

Передача параметров

GET request to "/cars/honda" 

возвращает список моделей автомобилей Honda

Прохождение запроса

GET request to "/car/honda?color=blue"

возвращает список моделей автомобилей Honda, но с фильтром, поэтому возвращаются только модели с синим цветом.

Нет смысла добавлять эти фильтры в параметры URL-адреса (/ car / honda / color / blue), потому что, согласно REST, это означало бы, что мы хотим получить кучу информации о «синем» цвете. Поскольку нам действительно нужен отфильтрованный список моделей Honda, мы используем строки запроса для фильтрации возвращаемых результатов.

Обратите внимание, что строки запроса на самом деле представляют собой пары {ключ: значение} в несколько другом формате:? Ключ1 = значение1 & ключ2 = значение2 & ключ3 = значение3.

Шивам Чхетри
источник