Unumdorlik (Fastify)
Nest default holatda Express freymvorkidan foydalanadi. Avval aytilganidek, Nest shuningdek, masalan, Fastify kabi boshqa kutubxonalar bilan ham moslikni taqdim etadi. Nest bu frey
Nest default holatda Express freymvorkidan foydalanadi. Avval aytilganidek, Nest shuningdek, masalan, Fastify kabi boshqa kutubxonalar bilan ham moslikni taqdim etadi. Nest bu freymvorkdan mustaqillikni freymvork adapterini implementatsiya qilish orqali ta'minlaydi; uning asosiy vazifasi middleware va handlerlarni tegishli kutubxona-spetsifik implementatsiyalarga proksi qilishdir.
Eslatma: freymvork adapterini implementatsiya qilish uchun maqsadli kutubxona Express dagi kabi so'rov/javob pipeline qayta ishlashni taqdim etishi kerak.
Fastify Nest uchun yaxshi muqobil freymvork, chunki u Express dagi kabi dizayn muammolarini o'xshash tarzda hal qiladi. Biroq fastify Express ga qaraganda ancha tezroq, deyarli ikki baravar yaxshi benchmark natijalariga erishadi. Adolatli savol: nega Nest default HTTP provayder sifatida Expressdan foydalanadi? Sababi, Express keng qo'llanadi, yaxshi tanilgan va Nest foydalanuvchilari uchun tayyor bo'lgan juda katta mos middlewarelar to'plamiga ega.
Ammo Nest freymvorkdan mustaqillikni ta'minlagani uchun, ular orasida osongina migratsiya qilishingiz mumkin. Agar siz juda yuqori tezlikdagi unumdorlikni qadrlasangiz, Fastify yaxshiroq tanlov bo'lishi mumkin. Fastifydan foydalanish uchun ushbu bobda ko'rsatilgandek ichki FastifyAdapter ni tanlang.
O'rnatish
Avval kerakli paketni o'rnatamiz:
1$ npm i --save @nestjs/platform-fastifyAdapter
Fastify platformasi o'rnatilgach, FastifyAdapter dan foydalanishimiz mumkin.
1import { NestFactory } from '@nestjs/core';
2import {
3 FastifyAdapter,
4 NestFastifyApplication,
5} from '@nestjs/platform-fastify';
6import { AppModule } from './app.module';
7
8async function bootstrap() {
9 const app = await NestFactory.create<NestFastifyApplication>(
10 AppModule,
11 new FastifyAdapter()
12 );
13 await app.listen(process.env.PORT ?? 3000);
14}
15bootstrap();Default holatda Fastify faqat localhost 127.0.0.1 interfeysida tinglaydi (batafsil o'qing). Agar boshqa hostlarda ulanishlarni qabul qilmoqchi bo'lsangiz, listen() chaqiruvida '0.0.0.0' ni ko'rsating:
1async function bootstrap() {
2 const app = await NestFactory.create<NestFastifyApplication>(
3 AppModule,
4 new FastifyAdapter(),
5 );
6 await app.listen(3000, '0.0.0.0');
7}Platformaga xos paketlar
FastifyAdapter dan foydalanganda, Nest Fastify ni HTTP provayder sifatida ishlatishini yodda tuting. Bu shuni anglatadiki, Expressga tayangan har bir retsept ishlamasligi mumkin. Shuning o'rniga Fastify ga mos paketlardan foydalaning.
Redirect javob
Fastify redirect javoblarni Expressdan bir oz boshqacha boshqaradi. Fastify bilan to'g'ri redirect qilish uchun status kodi va URL ni birga qaytaring, quyidagicha:
1@Get()
2index(@Res() res) {
3 res.status(302).redirect('/login');
4}Fastify opsiyalari
FastifyAdapter konstruktori orqali Fastify konstruktoriga opsiyalarni uzatishingiz mumkin. Masalan:
1new FastifyAdapter({ logger: true });Middleware
Middleware funksiyalari Fastify o'ramalari o'rniga xom req va res obyektlarini oladi. middie paketi (u ichki ishlatiladi) shunday ishlaydi va fastify ham shunday - batafsil ma'lumot uchun ushbu sahifani ko'ring,
1import { Injectable, NestMiddleware } from '@nestjs/common';
2import { FastifyRequest, FastifyReply } from 'fastify';
3
4@Injectable()
5export class LoggerMiddleware implements NestMiddleware {
6 use(req: FastifyRequest['raw'], res: FastifyReply['raw'], next: () => void) {
7 console.log('Request...');
8 next();
9 }
10}Route Config
Fastify ning route config imkoniyatidan @RouteConfig() dekoratori bilan foydalanishingiz mumkin.
1@RouteConfig({ output: 'hello world' })
2@Get()
3index(@Req() req) {
4 return req.routeConfig.output;
5}Route Constraints
v10.3.0 dan boshlab, @nestjs/platform-fastify Fastify ning route constraints funksiyasini @RouteConstraints dekoratori bilan qo'llab-quvvatlaydi.
1@RouteConstraints({ version: '1.2.x' })
2newFeature() {
3 return 'This works only for version >= 1.2.x';
4}@RouteConfig() va @RouteConstraints@nestjs/platform-fastify paketidan import qilinadi.
Misol
Ishlaydigan misol bu yerda mavjud.