req.query та req.param у ExpressJS


89

Основні відмінності між req.queryта req.paramв Express

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

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

[РЕДАГУВАТИ]

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

Подивіться :: на це питання щодо програми, на яку я посилався :: Проста програма Express для запиту результату


1
Ви маєте на увазі req.queryі req.param?
arb

1
так ! ......... Я також змінив питання

Відповіді:


116

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- це функція, яка виділяє параметри із запиту. Все це можна знайти тут .

ОНОВЛЕННЯ

Якщо дієсловом є POSTа ви використовуєте bodyParser, тоді ви повинні мати змогу отримати тіло форми, у якому ви функціонуєте req.body. Це буде проаналізована версія JS POSTформи ed.


Дякую, тоді Припустимо, що клієнт надсилає в запиті пару Android (ключ, значення) ........ яку використовувати в Express?

Неможливо відповісти на це питання, не побачивши відповідний запит.
arb

Будь ласка, подивіться на оновлене питання ..... я також згадав посилання на програму, яку я експресно використовую, в одному з питань, які я розмістив ..... будь ласка, додайте відгук!

@Iplay, якщо ця відповідь вам допомогла, подумайте, будь ласка, позначте її як відповідь на це питання. Дякую.
arb

15

req.queryце рядок запиту відправляється на сервер, наприклад , /page?тест = 1 , req.paramце параметри , що передаються в обробник.

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


Дякуємо, то припустимо, що клієнт надсилає в запиті пару Android (ключ, значення) ........ який із них використовувати?

1
Я не уявляю, про що ви говорите, якщо це запит POST, він буде в req.data, якщо це GET, то буде вreq.param
OneOfOne

Привіт, підкажіть, будь ласка, як перевірити req.params на невизначеність?
Arj 1411,

@AnandRaj це було б просто порожньо, тож перевіртеc.Param("id") == ""
OneOfOne

@OneOfOne, Дякую за відповідь. Дозвольте мені перевірити це, і я вас
оновлю

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 на невизначеність?
Arj 1411,

@AnandRaj, що ви маєте на увазі під невизначеним? ви маєте на увазі параметри невідомі?
Abhijit Gaikwad

я мав на увазі, коли перевірив тип req.params, який він показує невизначеним. Моя мета - перевірити, чи є req.params. <Будь-який параметр URI> нульовим чи ні
Arj 1411

@AnandRaj, ти можеш розмістити свій код? Наступний код працює для мене var express = require ('express'); var app = express (); app.get ('/', функція (req, res) {console.log (req.params); res.send (req.params);}); app.listen (3000);
Абхіджіт Гайквад

@AnandRaj спробуй, якщо (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, ми використовуємо рядки запитів, щоб відфільтрувати результати, які повертаються.

Зверніть увагу, що рядки запитів насправді є лише парами {key: value} у дещо іншому форматі:? Key1 = value1 & key2 = value2 & key3 = value3.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.