Перейти до основного вмісту

Роутінг у додатку

Методи Route

За допомогою класу express.Router можна створювати модульні, монтовані обробники маршрутів. Екземпляр Router є комплексною системою проміжних обробників та маршрутизації; тому його часто називають «міні-додатком».

const express = require('express');
const router = express.Router();

// визначимо домашній роутер
router.get('/', (req, res) => {
res.send('Це головний роутер');
});

// визначимо роутер about
router.get('/about', (req, res) => {
res.send('About');
});

module.exports = router;

Потім підключимо модуль my-router.js маршрутизації у додаток:

const myRouter= require('./my-router');
...
app.use('/my-router', myRouter);

Цей додаток тепер зможе обробляти запити, адресовані ресурсам /my-router та /my-router/about.

Express підтримує велику кількість методів маршрутизації, що відповідають методам HTTP, але з більшістю ми навіть не матимемо справу, основні методи для нас будуть:

  • get
  • post
  • put
  • delete
  • patch

Існує також особливий метод маршрутизації, app.all(), не є похідним від будь-якого методу HTTP. Цей метод використовується для завантаження функцій проміжної обробки у дорозі для всіх методів запитів. Він буває корисний коли нам треба реагувати на будь-яке звернення до сервера.

У наведеному нижче прикладі обробник буде запущений для запитів, адресованих /anything, незалежно від того, чи використовується GET, POST, PUT, DELETE або будь-який інший метод запиту HTTP, підтримуваний у модулі http.

app.all('/anything', (req, res, next) => {
console.log('Anything method.');
next(); // передаємо управління далі
});

Методи відповіді

Методи в об'єкті відповіді (res), перелічені в таблиці нижче можуть передавати відповідь клієнту та завершувати цикл “запит-відповідь”. Якщо жоден із цих методів не буде викликано з обробника маршруту, клієнтський запит зависне.

МетодОпис
res.download()Запрошення на завантаження файлу
res.end()Завершення процесу відповіді
res.json()Надсилання відповіді JSON
res.jsonp()Надсилання відповіді JSON з підтримкою JSONP
res.redirect()Перенаправлення відповіді
res.render()Виведення шаблону представлення
res.send()Надсилання відповіді різних типів
res.sendFile()Надсилання файлу у вигляді потоку відповідей

Ланцюжки методів

Метод app.route() дозволяє створювати обробники маршрутів, що утворюють ланцюжки для конкретного шляху маршруту. Оскільки шлях один і той же для різних методів HTTP, зручно створювати модульні маршрути, щоб мінімізувати надмірність та кількість друкарських помилок. Нижче наведено приклад об'єднаних у ланцюжок обробників маршрутів, визначених за допомогою функції app.route().

app
.route('/blog')
.get((req, res) => {
res.send('Get a list of blog');
})
.post((req, res) => {
res.send('Add a record to blog');
})
.put((req, res) => {
res.send('Update blog');
});