EXPRESS, параметры запроса
Разберем подробнее объект Request, что он содержит и как с ним работать.
Вот основные свойства, которые вы, вероятно, будете использовать:
Свойство | Описание |
---|---|
.app | содержит ссылку на объект приложения Express |
.baseUrl | базовый путь, по которому приложение отвечает |
.body | содержит данные, представленные в теле запроса (должны быть проанализированы и заполнены вручную, прежде чем вы сможете получить к ним доступ) |
.cookies | содержит данные cookie, отправленные по запросу (требуется промежуточная программная обработка cookie-parser) |
.hostname | название сервера |
.ip | IP сервера |
.method | используемый HTTP метод |
.params | параметры запроса в роуте |
.path | URL путь |
.protocol | протокол запроса |
.query | объект, содержащий все параметры запроса |
.secure | true если запрос безопасен (использует HTTPS) |
.signedCookies | содержит данные cookie, отправленные запросом (требуется промежуточная программная обработка cookie-parser) |
.xhr | true если запрос отправлен с помощью XMLHttpRequest |
Как получить GET параметры запроса с использованием express
Пример строки запроса:
?name=flavio&age=35
Как нам получить эти значения из строки запроса в Express?
Express делает это очень просто, заполняя объект Request.query для нас:
const express = require('express') const app = express() app.get('/', (req, res) => { console.log(req.query) }) app.listen(8080)
Этот объект заполнен значениями для каждого параметра запроса. Если в запросе не было параметров, данный объект будет пустым.
Мы можем перебрать этот объект использовав цикл for… in:
for (const key in req.query) { console.log(key, req.query[key]) }
Пример выше распечатает в консоли ключи и значения содержащиеся в объекте.
Вы также можете получить доступ к отдельным свойствам:
req.query.name //flavio req.query.age //35
Как получить post query string параметры с использованием express
Параметры запроса POST отправляются клиентами HTTP, например, с помощью форм или при выполнении данных отправки запроса POST.
Как вы можете получить доступ к этим данным?
Если данные были отправлены в формате JSON с использованием Content-Type: application/json
, вы можете использовать парсер express.json():
const express = require('express') const app = express() app.use(express.json())
Если данные были отправлены как JSON с использованием Content-Type: application / x-www-form-urlencoded, вы будете использовать промежуточное программное обеспечение express.urlencoded ():
const express = require('express') const app = express() app.use(express.urlencoded())
В обоих случаях вы можете получить доступ к данным, ссылаясь на них из Request.body:
app.post('/form', (req, res) => { const name = req.body.name })
В старых версиях Express для обработки данных POST требовалось использовать модуль body-parser. Это больше не относится к Express 4.16 (выпущенной в сентябре 2017 года) и более поздним версиям.