Опишите типичный стек бэкенда: как вы управляете роутингом, валидацией, авторизацией, обработкой ошибок, логированием?
Answer from AI
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' });
});