Установи Express и собери свой первый сервер с маршрутами, URL-параметрами и middleware.
Открыть этот урок в KodokonТы уже умеешь запускать сервер с помощью встроенного модуля http: там всё делается вручную - от чтения URL до сборки заголовков. Express - это фреймворк, который стандартизировал веб-разработку на стороне Node: маршрутизация, middleware, лаконичный API, и при этом ничего не скрывается о протоколе. Создай проект и установи его.
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install expressДобавь в свой package.json свойство type со значением module: весь проект будет использовать ES-модули. Затем создай server.js. Для рабочего сервера достаточно нескольких строк: создаёшь приложение, объявляешь маршрут и слушаешь порт.
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Kodokon API online");
});
app.listen(3000, () => {
console.log("http://localhost:3000");
});Маршрут связывает HTTP-метод и путь с функцией. Динамические сегменты объявляются через двоеточие: в /users/:id значение доступно в req.params.id. Параметры запроса (?q=node) попадают в req.query. Держи это различие в голове: путь определяет ресурс, строка запроса уточняет сам запрос.
app.get("/users/:id", (req, res) => {
const { id } = req.params;
res.json({ id, name: "User " + id });
});
app.get("/search", (req, res) => {
const { q } = req.query;
res.json({ query: q ?? "" });
});Middleware - это функция, которая выполняется между приходом запроса и твоим маршрутом. Её сигнатура: (req, res, next). Она может обогатить req, ответить сама или передать управление дальше через next(). По сути Express - это просто цепочка middleware: логирование, аутентификация, разбор тела запроса. Вот такой логирует каждый запрос вместе с его длительностью:
app.use((req, res, next) => {
const start = Date.now();
res.on("finish", () => {
const ms = Date.now() - start;
console.log(`${req.method} ${req.url} ${ms}ms`);
});
next();
});/users/:id. Где ты прочитаешь значение id?req.query.idreq.params.idreq.body.idnext() в middleware Express?package.json, чтобы использовать синтаксис import в Node.js?type со значением moduleesm со значением true