NestJS, популярный фреймворк Node.js, предлагает надежную экосистему функций, которые упрощают создание масштабируемых и удобных в сопровождении приложений. Одним из важнейших компонентов NestJS является промежуточное ПО, которое играет ключевую роль в обработке запросов. В этой статье мы углубимся в мир промежуточного программного обеспечения, демистифицируем его концепцию и изучим, как эффективно использовать его в ваших приложениях NestJS. Независимо от того, являетесь ли вы новичком или опытным разработчиком, понимание промежуточного программного обеспечения, несомненно, повысит ваши навыки работы с NestJS!

Что такое промежуточное ПО?

В контексте NestJS промежуточное ПО — это функция, которая запускается во время жизненного цикла запроса/ответа, перехватывая входящие запросы до того, как они достигнут обработчика маршрута. Думайте об этом как о станции промежуточного программного обеспечения, через которую должны проходить все входящие запросы, что позволяет вам изменять, проверять или регистрировать данные по пути.

Функции промежуточного программного обеспечения

Функции промежуточного программного обеспечения в NestJS следуют определенной сигнатуре, принимая три параметра: объект запроса req, объект ответа res и функцию next. Функция next имеет решающее значение, поскольку она позволяет запросу продолжить свое путешествие к следующему промежуточному программному обеспечению или обработчику маршрута.

Давайте напишем простое промежуточное программное обеспечение, которое регистрирует метод входящего запроса и URL-адрес:

// LoggingMiddleware.ts
import { Request, Response, NextFunction } from 'express';

export function loggingMiddleware(req: Request, res: Response, next: NextFunction) {
  console.log(`Incoming request: ${req.method} ${req.url}`);
  next();
}

Использование промежуточного программного обеспечения в NestJS

Теперь, когда у нас есть промежуточное ПО для ведения журналов, давайте посмотрим, как мы можем применить его к определенному маршруту или ко всему приложению. Чтобы использовать промежуточное ПО глобально в вашем приложении NestJS, вам необходимо зарегистрировать его в своем модуле приложения:

// AppModule.ts
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { loggingMiddleware } from './LoggingMiddleware';

@Module({
 imports: [],
 controllers: [AppController],
 providers: [AppService],
})
export class AppModule implements NestModule {
   configure(consumer: MiddlewareConsumer) {
   consumer.apply(loggingMiddleware).forRoutes('*');
   }
}

В этом примере мы используем метод forRoutes(‘*’) для применения loggingMiddleware ко всем входящим запросам. Однако вы можете применить промежуточное ПО к определенным маршрутам или контроллерам, передав их имена в качестве аргументов.

Практичное и забавное ПО промежуточного слоя

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

// FunnyGreetingMiddleware.ts
import { Request, Response, NextFunction } from 'express';

const funnyGreetings = [
   "Hello there! Did you bring cookies?",
   "Hey, is this thing on? Just kidding! Welcome!",
   "Knock, knock. Who's there? It's middleware!",
   "Are you a developer or a magician? You just summoned middleware!",
];

export function funnyGreetingMiddleware(req: Request, res: Response, next: NextFunction) {
   const randomIndex = Math.floor(Math.random() * funnyGreetings.length);
   const greeting = funnyGreetings[randomIndex];
   console.log(greeting);
   next();
}

Не забудьте зарегистрировать это новое промежуточное ПО в модуле приложения, как мы это делали раньше.

Заключение

Поздравляем! Теперь вы освоили искусство использования промежуточного программного обеспечения в NestJS. Вы узнали, что такое ПО промежуточного слоя, как создавать собственные функции ПО промежуточного слоя и даже как добавить юмора в свои приложения. С промежуточным программным обеспечением вы можете эффективно управлять своими запросами, добавлять аутентификацию, ведение журнала и многое другое.

Промежуточное ПО — это лишь одна из многих мощных функций, которые NestJS предоставляет, чтобы помочь вам создавать надежные и масштабируемые приложения. Итак, идите вперед и исследуйте огромные возможности, которые предлагает NestJS. Удачного кодирования, и помните, что всегда есть место для творчества даже в самых технических частях вашего кода!

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .