Типизированное промежуточное ПО и обработчики ошибок
Пишите безопасные с точки зрения типов функции промежуточного ПО Express
«Типизированное промежуточное ПО и обработчики ошибок» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Добро пожаловать
Сигнатура промежуточного ПО
import { RequestHandler } from 'express';
const authMiddleware: RequestHandler = (req, res, next) => {
if (!req.headers.authorization) return res.status(401).json({});
next();
};NextFunction
import { Request, Response, NextFunction } from 'express';
function logger(req: Request, res: Response, next: NextFunction): void {
console.log(req.method, req.path);
next();
}Сигнатура обработчика ошибок
import { ErrorRequestHandler } from 'express';
const errorHandler: ErrorRequestHandler = (err, req, res, next) => {
res.status(err.status ?? 500).json({ message: err.message });
};Пользовательский класс ошибки
class AppError extends Error {
constructor(public message: string, public status: number = 500) {
super(message);
}
}Обёртка для асинхронного промежуточного ПО
function asyncHandler(fn: RequestHandler): RequestHandler {
return (req, res, next) => Promise.resolve(fn(req, res, next)).catch(next);
}Промежуточное ПО аутентификации с добавлением пользователя
const authenticate: RequestHandler = async (req, res, next) => {
const user = await verifyToken(req.headers.authorization);
req.user = user; // requires module augmentation
next();
};Промежуточное ПО валидации с Zod
function validate<T>(schema: ZodSchema<T>): RequestHandler {
return (req, res, next) => {
const result = schema.safeParse(req.body);
if (!result.success) return res.status(400).json(result.error);
req.body = result.data;
next();
};
}Промежуточное ПО на уровне маршрутизатора
router.use('/admin', authenticate, authorize('admin'));
router.get('/admin/users', asyncHandler(listUsers));Промежуточное ПО для журналирования
const requestLogger: RequestHandler = (req, _res, next) => {
console.log(`${req.method} ${req.path}`);
next();
};Регистрация глобального обработчика ошибок
app.use(requestLogger);
app.use('/api', apiRouter);
app.use(errorHandler); // must be lastБыстрая проверка
Итоги
Часто задаваемые вопросы
Урок «Типизированное промежуточное ПО и обработчики ошибок» бесплатный?
Да — полный текст урока «Типизированное промежуточное ПО и обработчики ошибок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Типизированное промежуточное ПО и обработчики ошибок»?
Пишите безопасные с точки зрения типов функции промежуточного ПО Express Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Типизированное промежуточное ПО и обработчики ошибок»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Настройка TypeScript с Node.js
- Типизация запросов и ответов Express
- Типизированное промежуточное ПО и обработчики ошибок
- Переменные окружения и типизация конфигурации