Извлечение параметров URL и POST в Express

Часто Express используется для разработки приложений, которым нужно будет получать информацию от пользователей. Двумя наиболее популярными методами сбора данных являются параметры URL и POST.

В этом мануале вы узнаете, как использовать Express для извлечения параметров URL и POST из запросов.

Требования

  • Локальная установка Node.js. Следуйте инструкциям для вашего дистрибутива: mac OSUbuntuDebianCentOS.
  • Для отправки 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: ,

Добавить комментарий