Роутінг у додатку
Методи 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');
});