Sobes.tech
Назад к вопросам
Senior
6

Опишите типичный стек бэкенда: как вы управляете роутингом, валидацией, авторизацией, обработкой ошибок, логированием?

Компании, где спрашивали
Zuru Tech

Ответ от нейросети

sobes.tech AI

В типичном Node.js бэкенде часто используется фреймворк Express для управления роутингом. Роутинг организуется через определение маршрутов с методами HTTP (GET, POST и т.д.), например:

const express = require('express');
const app = express();

app.get('/users/:id', (req, res) => {
  // обработка запроса
});

Для валидации данных часто применяют библиотеки вроде Joi или express-validator, которые позволяют описать схему данных и проверять входящие запросы перед обработкой.

Авторизация реализуется через middleware, например, с использованием JWT. Middleware проверяет наличие и валидность токена, а также права доступа пользователя.

Обработка ошибок обычно централизована через middleware с четырьмя параметрами (err, req, res, next), где можно логировать ошибки и отправлять клиенту корректные ответы.

Логирование ведется с помощью библиотек типа Winston или Pino, которые позволяют сохранять логи в файлы, базы данных или внешние сервисы, а также настраивать уровни логирования (info, error, debug).

Пример middleware для авторизации и обработки ошибок:

// Авторизация
function authMiddleware(req, res, next) {
  const token = req.headers.authorization;
  if (!token) return res.status(401).send('Unauthorized');
  // Проверка токена...
  next();
}

// Обработка ошибок
app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).json({ message: 'Internal Server Error' });
});