Можем ли мы получить переменные в строке запроса в Node.js так же, как мы получаем их $_GET
в PHP?
Я знаю, что в Node.js мы можем получить URL в запросе. Есть ли способ получить параметры строки запроса?
Можем ли мы получить переменные в строке запроса в Node.js так же, как мы получаем их $_GET
в PHP?
Я знаю, что в Node.js мы можем получить URL в запросе. Есть ли способ получить параметры строки запроса?
Ответы:
В Express это уже сделано для вас, и вы можете просто использовать req.query для этого:
В противном случае в NodeJS вы можете получить доступ к req.url и встроенному
url
модулю для [url.parse] ( https://nodejs.org/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost ) его вручную:источник
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
req.query
req.query
илиreq.param
(что отличается отreq.params
... см. Ниже.request
и не имеет ничего общего с Express. Смотрите ответ @ whitequark ниже (используйтеrequest.query
)Поскольку вы упомянули Express.js в своих тегах, вот специальный ответ Express: используйте req.query . Например
источник
req.query.id
, нет необходимости использовать скобки.В Express используйте
req.query
.req.params
получает только параметры маршрута, а не параметры строки запроса. Смотрите экспресс или паруса документации:Тем не менее, в большинстве случаев вы хотите получить значение параметра независимо от его источника. В этом случае используйте
req.param('foo')
.Значение параметра будет возвращено независимо от того, была ли переменная в параметрах маршрута, строке запроса или в зашифрованном теле запроса.
Примечание: если вы хотите пересечь все три типа параметров запроса (аналогично PHP
$_REQUEST
), вам просто нужно объединить параметры вместе - вот как я это настроил в Sails . Имейте в виду, что у объекта параметров пути / маршрутаreq.params
есть свойства массива, поэтому порядок имеет значение (хотя это может измениться в Express 4 )источник
req.params
на документы Sails: sailsjs.org/#/documentation/reference/req/req.params.html и новые экспресс-документы: expressjs.com/4x/api.html#req.paramsreq.param()
вспомогательная функция, вероятно, будет полностью удалена в Express 5. Это не будет неизбежно до некоторого времени позже в 2017 году, поэтому я подожду редактировать этот ответ до тех пор. В то же время: безопасно использоватьreq.param()
с Express <= 3.x / Sails <= 0.12 и с последней доступной версией Express 4, хотя и с сообщением журнала устаревания. (Для пользователей Sails: реализацияreq.param()
Sails v1.0 перейдет в ядро, и в дальнейшем она будет полностью поддерживаться в Sails.)Для Express.js вы хотите сделать
req.params
:источник
Я учился на других ответах и решил использовать этот код на своем сайте:
Тогда вы можете просто позвонить
где должен быть URL для получения
источник
parse
наreq.url
обращенных к объекту.источник
Если вы используете ES6 и Express , попробуйте этот
destructuring
подход:В контексте:
Вы также можете использовать значения по умолчанию с
destructuring
:источник
Есть 2 способа передачи параметров с помощью метода GET.
Метод 1. Подход MVC, в котором вы передаете такие параметры, как / routename /: paramname.
В этом случае вы можете использовать req.params.paramname, чтобы получить значение параметра. Например, см. Код ниже, где я Я ожидаю, что Id в качестве
ссылки может быть как: http://myhost.com/items/23
Метод 2: Общий подход: передача переменных в виде строки запроса с использованием '?' оператор
Например, обратитесь к приведенному ниже коду, где я ожидаю, что Id в качестве
ссылки на параметр запроса может выглядеть следующим образом: http://myhost.com/items?id=23
источник
Вы должны быть в состоянии сделать что-то вроде этого:
источник
ОБНОВЛЕНИЕ 4 мая 2014
Старый ответ сохранился здесь: https://gist.github.com/stefek99/b10ed037d2a4a323d638
1) Установите экспресс:
npm install express
app.js
2) Запустите приложение:
node app.js
3) Зайдите в браузер:
http://localhost:3000/endpoint?id=something
(с момента моего ответа многое изменилось, и я считаю, что это стоит держать в курсе)
источник
Небольшой HTTP-сервер Node.js, прослушивающий порт 9080, анализирующий данные GET или POST и отправляющий их обратно клиенту как часть ответа:
Сохраните его как
parse.js
и запустите на консоли, введя "node parse.js".источник
Whitequark ответил хорошо. Но в текущих версиях Node.js и Express.js требуется еще одна строка. Обязательно добавьте 'require http' (вторая строка). Я разместил здесь более полный пример, который показывает, как этот вызов может работать. После запуска введите
http://localhost:8080/?name=abel&fruit=apple
в браузере, и вы получите крутой ответ на основе кода.источник
Это так просто:
Пример URL:
Вы можете распечатать все значения строки запроса, используя:
Вывод
Для печати конкретного:
Вывод
источник
Ты можешь использовать
источник
Вы можете использовать с экспрессом ^ 4.15.4:
Надеюсь это поможет.
источник
В
express.js
вы можете получить его довольно легко, все , что вам нужно сделать в функции контроллера является:И это все, если вы используете синтаксис es6.
Оплаченный
{id}
расшифровываетсяObject destructuring
как новая функция es6.источник
Вы можете использовать это или попробовать body-parser для разбора специального элемента из параметров запроса.
источник
Это на самом деле просто:
источник
Вы можете использовать модуль url для сбора параметров с помощью url.parse
В экспрессе это сделано,
Например:
источник
В Express мы можем просто использовать
req.query.<name>
. Это работает так же, как$_GET['name']
в PHP.источник
С моей точки зрения, я думаю, что многие люди смешивают два разных понятия. Во время разработки REST я был знаком с передачей информации в URL двумя способами: «переменные пути» и «параметры запроса» (параметры запроса). RFC описывает части URI следующим образом: введите здесь описание ссылки. Я понял, что автору хотелось бы знать, как передавать параметры запроса. Я хотел бы только облегчить понимание темы, но решение упоминалось здесь много раз.
Вы можете получить параметры запроса из URI с
request.query.<name of the parameter>
, второе упомянутое решение было,request.params.<name of the parameter>
и с этим вы можете получить переменные пути.источник
Таким образом, есть два способа получения этого «идентификатора»: 1) использование параметров: параметры кода будут выглядеть примерно так: скажем, у нас есть массив,
Тогда для параметров мы можем сделать что-то вроде:
2) Другой метод заключается в использовании параметров запроса. поэтому URL будет выглядеть примерно так: «..... \ api \ xyz? id = 1», где «? id = 1» - это часть запроса. В этом случае мы можем сделать что-то вроде:
источник
источник
Если вам когда-либо понадобится отправить
GET
запросIP
как a, так и aDomain
(в других ответах не упоминалось, что вы можете указатьport
переменную), вы можете использовать эту функцию:Не пропустите обязательные модули в верхней части вашего файла:
Также помните, что вы можете использовать
https
модуль для связи по защищенным доменам и ssl. поэтому эти две строки изменились бы:источник
почему не смешивается с кодом сервера
например PHP
источник
Я использую MEANJS 0.6.0 с express@4.16, это хорошо
Клиент:
контроллер:
Сервисы:
сервер
маршруты
контроллер
источник
-------- Доступ к данным строки запроса -------
Предположим, что это ссылка http://webapplog.com/search?term=node.js&page=1
Так что в экспрессе вы можете использовать:
req.query.term
req.query.page
илиreq.query
(он извлечет запрос в объекте)// Пример
app.get('http://webapplog.com/search?term=node.js&page=1',(req, res)=>{ res.json({term:req.query.term, page:req.query.page}) })
-------- Доступ к параметрам URL -------
Предположим, что это ссылка http://webapplog.com/node.js/pages/100
Итак, в экспрессе вы можете использовать:
app.get('/:term/pages/:page',....)
req.params.term
req.params.page
// Пример
app.get('http://webapplog.com/:term/pages/:page',(req, res)=>{ res.json({term:req.params.term, page:req.params.page}) })
источник