Извлечение параметров URL и POST в Express
Development, Java | Комментировать запись
Часто Express используется для разработки приложений, которым нужно будет получать информацию от пользователей. Двумя наиболее популярными методами сбора данных являются параметры URL и POST.
В этом мануале вы узнаете, как использовать Express для извлечения параметров URL и POST из запросов.
Требования
- Локальная установка Node.js. Следуйте инструкциям для вашего дистрибутива: mac OS, Ubuntu, Debian, CentOS.
- Для отправки POST-запросов нужен инструмент Postman.
Это руководство было проверено на версиях Node v15.4.0, npm v7.10.0 и express v4.17.1.
1: Создание тестового проекта
Сначала откройте окно терминала и создайте новый каталог проекта:
mkdir express-params-example
Затем перейдите в этот каталог:
cd express-params-example
На данном этапе вы можете инициализировать ваш новый проект npm:
npm init -y
Далее нужно установить пакет express:
npm install express@4.17.1
На данный момент у нас есть простой тестовый проект, готовый к использованию Express.
Создайте файл server.js и откройте его в редакторе кода:
const express = require('express'); const app = express(); const port = process.env.PORT || 8080; // routes will go here app.listen(port); console.log('Server started at http://localhost:' + port);
Вернитесь в окно терминала и запустите приложение:
node server.js
Примечание: Вам придется перезапускать сервер node каждый раз, когда вы редактируете файл server.js. Если эта задача становится утомительной, обратитесь к мануалу Автоматический перезапуск приложений Node.js с помощью nodemon.
Теперь давайте создадим два маршрута для проверки извлечения параметров.
2: Извлечение параметров URL
Получить значения параметров URL можно с помощью req.query.
Рассмотрим следующий пример:
http://example.com/api/users?id=4&token=sdfa3&geo=us
Этот URL-адрес включает параметры id, token и geo (геолокация):
id: 4 token: sdfa3 geo: us
Повторно откройте файл server.js с помощью редактора кода и добавьте следующие строки для req.query.id, req.query.token и req.query.geo:
// ...
// routes will go here
// ...
app.get('/api/users', function(req, res) {
const user_id = req.query.id;
const token = req.query.token;
const geo = req.query.geo;
res.send({
'user_id': user_id,
'token': token,
'geo': geo
});
});
app.listen(port);
console.log('Server started at http://localhost:' + port);
Запустите сервер и используйте URL-адрес http://localhost:8080/api/users?id=4&token=sdfa3&geo=us в веб-браузере или в Postman.
Сервер вернет вам значения user_id, token и geo.
3: Извлечение значений из маршрутов
req.params можно использовать для получения значений из маршрутов.
Рассмотрим следующий URL:
http://localhost:8080/api/1
Этот URL-адрес включает маршруты для api и :version (1).
Вернитесь в файл server.js с помощью редактора кода и добавьте следующие строки для req.params.version:
// ...
// routes will go here
// ...
app.get('/api/:version', function(req, res) {
res.send(req.params.version);
});
app.listen(port);
console.log('Server started at http://localhost:' + port);
Запустите сервер и используйте URL-адрес http://localhost:8080/api/1 в веб-браузере или в Postman.
Сервер вернет вам значение version.
4: Функция .param
Давайте теперь попробуем использовать функцию Express .param для получения определенного параметра. Эта функция считается промежуточным программным обеспечением и запускается до вызова маршрута.
Ее можно использовать для проверки данных (например, уточнить, существует ли пользователь) или для сбора важной информации о пользователе или элементе.
Взгляните на следующий URL:
http://localhost:8080/api/users/8host
Этот URL включает маршруты для users и :name (8host).
Вернитесь в server.js и добавьте в него следующие строки, чтобы изменить name:
// ... app.param('name', function(req, res, next, name) { const modified = name.toUpperCase(); req.name = modified; next(); }); // routes will go here // ... app.get('/api/users/:name', function(req, res) { res.send('Hello ' + req.name + '!'); }); app.listen(port); console.log('Server started at http://localhost:' + port);
При запущенном сервере используйте URL-адрес http://localhost:8080/api/users/8host в веб-браузере или в Postman.
Сервер ответит:
Hello 8HOST!
Вы можете использовать промежуточный обработчик param для проверки передаваемой информации.
Затем сохраните информацию в запросе (req), чтобы другие маршруты имели к ней доступ.
5: Извлечение параметров POST
express.json() и express.urlencoded() – встроенные промежуточные функции для поддержки элементов с кодировкой JSON и URL.
Откройте server.js с помощью редактора кода и добавьте следующие строки:
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// ...
Затем добавьте app.post с req.body.id, req.body.token и req.body.geo:
// ...
// routes will go here
// ...
app.post('/api/users', function(req, res) {
const user_id = req.body.id;
const token = req.body.token;
const geo = req.body.geo;
res.send({
'user_id': user_id,
'token': token,
'geo': geo
});
});
app.listen(port);
console.log('Server started at http://localhost:' + port);
Если ваш сервер запущен, сгенерируйте POST-запрос с помощью Postman.
Примечание: Если вам нужна помощь в навигации по интерфейсу Postman, обратитесь к официальной документации.
Установите тип запроса POST и задайте URL-адрес http://localhost:8080/api/users. Затем установите для Body значение x-www-form-urlencoded.
Укажите следующие значения:
ключ | значение |
id | 4 |
token | sdfa3 |
geo | us |
После отправки ответа сервер вернет значения user_id, token и geo.
Заключение
В этой статье вы научились использовать Express для извлечения параметров из запросов URL и POST. Мы сделали это с помощью функций req.query, req.params и req.body.
Tags: Express, Express.js