Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Что такое Fastify

Fastify — веб-фреймворк для Node.js, на котором пишут серверы и JSON API. Он берёт на себя разбор запросов, маршруты, проверку данных и отправку ответов, а вам остаётся код вашего приложения. Курс написан для Fastify 5 и Node.js 22 или новее с ES-модулями (import и export).

Что понадобится

Нужен Node.js 22 или новее и npm, который устанавливается вместе с ним. Проверьте версии в терминале:

node -v
npm -v

Если первая команда показывает версию ниже 22, установите свежую LTS-версию с сайта nodejs.org.

Почему Fastify быстрый

Скорость Fastify складывается из нескольких решений:

РешениеЧто даёт
Быстрый поиск маршрутаАдрес сравнивается не со всеми маршрутами по очереди, а по дереву
Схемы ответаJSON собирается по заранее известной структуре, а не через общий JSON.stringify
Логгер PinoЗапись логов почти не тормозит сервер
ПлагиныКод загружается один раз при старте, а не при каждом запросе

Для небольшого блога разница в скорости незаметна. Важнее, что те же решения делают код аккуратнее: схемы проверяют входящие данные, а плагины разделяют приложение на независимые части.

Fastify и Express

Если вы знакомы с Express, многое покажется знакомым: маршруты тоже объявляются через app.get() и app.post(). Главные отличия:

  • обработчик может просто вернуть объект — Fastify сам отправит его как JSON;
  • асинхронные обработчики (async) поддерживаются без дополнительных обёрток;
  • проверка данных по схеме встроена во фреймворк;
  • вместо middleware используются плагины и хуки.

Сквозной пример

Через весь курс строится JSON API для блога: статьи и комментарии к ним. Клиент — браузер, мобильное приложение или другой сервер — отправляет запросы, а API отвечает данными в формате JSON:

GET    /posts              список статей
GET    /posts/:id          одна статья
POST   /posts              новая статья
GET    /posts/:id/comments комментарии к статье

Сначала статьи хранятся в массиве, позже — в базе SQLite.

Частая ошибка

Многие примеры в интернете написаны для Fastify 3 или 4 и для CommonJS (require). Часть из них в Fastify 5 не работает: например, сокращённые схемы без type: 'object' больше не принимаются. Проверяйте версию в примерах и в package.json.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.