Начало работы с Node.js и Express

Express – это фреймворк для разработки веб-приложений Node.js, который позволяет значительно более простым и понятным способом развертывать надежные API-интерфейсы и веб-серверы. Это легкий пакет, который не мешает работе основных функций Node.js.

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

Требования

Чтобы выполнить данный мануал, вам понадобится локальная установка Node.js (ее можно получить, следуя этим инструкциям для mac OSUbuntuDebianCentOS).

Это руководство было протестировано на версиях Node v15.14.0, npm v7.10.0, express v4.17.1 и serve-index v1.9.1.

1: Создание тестового проекта

Сначала откройте окно терминала и создайте новый каталог для нашего проекта:

mkdir express-example

Затем перейдите в этот каталог:

cd express-example

Далее нужно установить пакет express:

npm install express@4.17.1

На данный момент у вас есть новый проект для работы Express.

2: Создание сервера Express

Теперь, когда фреймворк Express установлен, создайте новый файл server.js, откройте его с помощью редактора кода и добавьте следующие строки кода:

const express = require('express');


const app = express();

Первая строка – это запрос основного модуля Express из установленного нами пакета. Этот модуль представляет собой функцию, которую мы затем запускаем во второй строке, чтобы создать переменную app. Таким образом вы можете создать несколько приложений, каждое со своими запросами и ответами.

const express = require('express');


const app = express();


app.get('/', (req, res) => {

  res.send('Successful response.');

});

Следующие три строки кода сообщают серверу Express, как обрабатывать GET-запрос. Express включает аналогичные функции для POST, PUT и других подобных запросов (через app.post (…), app.put (…) и так далее).

Эти функции принимают два основных параметра. Первый – это URL-адрес, на который распространяется эта функция. В этом случае мы установим ‘/’ в качестве цели (то есть функция будет предназначена для корневого URL-адреса нашего веб-сайта, в данном случае это localhost:3000).

Второй параметр – это функция с двумя аргументами: req и res. Объект req представляет запрос, который был отправлен на сервер; мы можем использовать его, чтобы прочитать данные о том, что просит сделать клиент. Объект res представляет собой ответ, который мы отправим обратно клиенту.

Здесь мы вызываем функцию в res, чтобы отправить ответ: ‘Successful response.’

Добавьте в файл server.js следующие строки:

const express = require('express');


const app = express();


app.get('/', (req, res) => {

  res.send('Successful response.');

});

app.listen(3000, () => console.log('Example app is listening on port 3000.'));

Итак, мы настроили запросы, пора запустить наш сервер! Передайте 3000 в функцию listen, которая сообщает приложению, какой порт прослушивать. Функция, переданная в качестве второго параметра, является опциональной и запускается при запуске сервера – она дает нам в консоли обратную связь, чтобы мы могли понять, что приложение запущено.

Вернитесь в окно терминала и запустите приложение:

node server.js

Затем посетите localhost:3000 в своем веб-браузере. В окне браузера должно отобразиться сообщение: ‘Successful response’. В терминале вы увидите: ‘Example app is listening on port 3000.’

Значит, наш веб-сервер работает. Однако мы, конечно, хотим отправить клиенту больше, чем одну строку текста. Давайте кратко рассмотрим, что такое промежуточное ПО и как настроить наш готовый сервер как статический файловый сервер.

3: Использование промежуточного программного обеспечения

В Express можно писать и использовать функции промежуточного ПО, которые имеют доступ ко всем HTTP-запросам, поступающим на сервер. Эти функции могут:

  • Выполнить любой код.
  • Внести изменения в объекты запроса и ответа.
  • Завершить цикл запрос-ответ.
  • Вызов следующей функции промежуточного программного обеспечения в стеке.

Мы можем написать собственные функции промежуточного ПО или использовать стороннее промежуточное ПО, импортировав его так же, как любой другой пакет.

Давайте попробуем сначала написать собственное промежуточное ПО для обслуживания статических файлов, а затем – использовать существующее.

Чтобы определить функцию промежуточного ПО, мы вызовем app.use() и передадим ей функцию. Базовая функция промежуточного ПО для вывода текущего времени на консоль при каждом запросе выглядит так (ее можно добавить в свой server.js):

const express = require('express');


const app = express();


app.use((req, res, next) => {

  console.log('Time: ', Date.now());

  next();

});


app.get('/', (req, res) => {

  res.send('Successful response.');

});


app.listen(3000, () => console.log('Example app is listening on port 3000.'));

Вызов next() сообщает промежуточному ПО перейти к следующей функции, если таковая имеется. Этот вызов важно включить в конец нашей функции, иначе запрос застрянет на этом промежуточном ПО.

При желании мы можем передать путь промежуточному ПО, которое будет обрабатывать запросы только к этому маршруту. Например:

const express = require('express');


const app = express();


app.use((req, res, next) => {

  console.log('Time: ', Date.now());

  next();

});


app.use('/request-type', (req, res, next) => {

  console.log('Request type: ', req.method);

  next();

});


app.get('/', (req, res) => {

  res.send('Successful response.');

});


app.listen(3000, () => console.log('Example app is listening on port 3000.'));

Если передать строку ‘/ request-type’ в качестве первого аргумента app.use(), эта функция будет запускаться только для запросов, отправленных на localhost:3000/request-type.

Вернитесь в окно терминала и запустите приложение:

node server.js

Затем перейдите по адресу localhost:3000/request-type в своем веб-браузере. В окне терминала будет отображаться метка времени запроса и сообщение ‘Request type:  GET’.

Теперь давайте попробуем использовать для обслуживания статических файлов существующее промежуточное ПО. Express имеет встроенную функцию промежуточного ПО, express.static. Также мы будем использовать функцию стороннего промежуточного ПО, serve-index, для отображения списка файлов.

Прежде всего в той же папке, где расположен сервер Express, создайте каталог public и поместите туда несколько файлов.

Затем установите пакет serve-index:

npm install serve-index@1.9.1

Импортируйте пакет serve-index в начале файла server.js. Затем включите промежуточное ПО express.static и serveIndex и сообщите им путь доступа и имя каталога:

const express = require('express');

const serveIndex = require('serve-index');


const app = express();


app.use((req, res, next) => {

  console.log('Time: ', Date.now());

  next();

});


app.use('/request-type', (req, res, next) => {

  console.log('Request type: ', req.method);

  next();

});


app.use('/public', express.static('public'));

app.use('/public', serveIndex('public'));


app.get('/', (req, res) => {

  res.send('Successful response.');

});


app.listen(3000, () => console.log('Example app is listening on port 3000.'));

Перезапустите сервер и перейдите по адресу localhost:3000/public. На экране вы увидите список всех ваших файлов!

Заключение

В этом кратком мануале вы установили Express и научились использовать его для создания веб-сервера. Также мы использовали встроенные и сторонние функции промежуточного ПО.

Читайте также: Определение маршрутов и методов HTTP-запросов в Express

Tags: , ,

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