Знакомство с Express
Самый популярный веб-фреймворк Node, который убирает рутину голого http.
Express — это минималистичный веб-фреймворк для Node, который берёт на себя маршрутизацию, разбор запросов и формирование ответов.
Установка
Express — это npm-пакет, его ставят в проект:
npm install express
После установки он появится в dependencies, и его можно подключать.
Сервер на Express
Сравните с голым http из прошлых уроков — кода заметно меньше и он понятнее:
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Главная страница");
});
app.get("/about", (req, res) => {
res.send("О нас");
});
app.listen(3000, () => {
console.log("Express слушает порт 3000");
});
Здесь app.get("/about", ...) явно описывает маршрут — никаких лесенок if. А res.send сам проставит нужные заголовки и завершит ответ.
Методы под HTTP-глаголы
У app есть метод под каждый HTTP-глагол:
| Метод | HTTP | Назначение |
app.get | GET | получить данные |
app.post | POST | создать ресурс |
app.put | PUT | обновить ресурс |
app.delete | DELETE | удалить ресурс |
Параметры маршрута
То, что в голом http требовало регулярок, в Express делается двоеточием. Часть пути после : становится параметром в req.params:
app.get("/users/:id", (req, res) => {
res.send("Пользователь №" + req.params.id);
});
// GET /users/42 -> "Пользователь №42"
Express сам выделит 42 и положит в req.params.id. Это и есть та рутина, которую он снимает с вас.
Кроме параметров пути, у запроса часто бывает строка запроса — часть URL после знака ?, например /search?q=node&limit=10. Её Express разбирает в объект req.query: здесь req.query.q будет "node", а req.query.limit — "10". Параметры пути (req.params) обычно указывают, какой ресурс нужен, а строка запроса (req.query) — как его отфильтровать или отсортировать.
res.send умеет разное
Метод res.send сам определяет тип ответа: строку отдаст как текст/HTML, объект или массив — как JSON (с правильным заголовком):
res.send("просто текст"); // text/html
res.send({ id: 1, name: "Аня" }); // application/json
res.json({ ok: true }); // явно JSON
Само превращение объекта в JSON-строку — чистый JS, который Express делает за вас:
const response = { id: 42, name: "Пользователь", roles: ["admin", "user"] };
console.log(JSON.stringify(response));
console.log("Тип:", typeof JSON.stringify(response));
Вывод:
{"id":42,"name":"Пользователь","roles":["admin","user"]}
Тип: string
Итог
- Express — npm-фреймворк, ставится через
npm install express. - Маршруты описывают методами
app.get,app.post,app.put,app.delete. - Параметры пути (
/users/:id) приходят вreq.params. res.send/res.jsonсами ставят заголовки и завершают ответ.