HTTP adapter
Ba'zan sizga asosiy HTTP serverga Nest ilova konteksti ichidan yoki tashqarisidan murojaat qilish kerak bo'lishi mumkin.
Ba'zan sizga asosiy HTTP serverga Nest ilova konteksti ichidan yoki tashqarisidan murojaat qilish kerak bo'lishi mumkin.
Har bir native (platformaga xos) HTTP server/kutubxona (masalan, Express yoki Fastify) instansiyasi adapter ichiga o'raladi. Adapter global mavjud provider sifatida ro'yxatdan o'tadi va uni ilova kontekstidan olish yoki boshqa provider'larga inject qilish mumkin.
Ilova kontekstidan tashqaridagi usul
Ilova kontekstidan tashqarida HttpAdapter ga havola olish uchun getHttpAdapter() metodini chaqiring.
1const app = await NestFactory.create(AppModule);
2const httpAdapter = app.getHttpAdapter();Injectable sifatida
Ilova konteksti ichida HttpAdapterHost ga havola olish uchun uni boshqa mavjud provider'lar kabi inject qiling (masalan, constructor injection orqali).
1export class CatsService {
2 constructor(private adapterHost: HttpAdapterHost) {}
3}HttpAdapterHost@nestjs/core paketidan import qilinadi.
HttpAdapterHost haqiqiy HttpAdapter emas. Haqiqiy HttpAdapter instansiyasini olish uchun shunchaki httpAdapter xossasiga murojaat qiling.
1const adapterHost = app.get(HttpAdapterHost);
2const httpAdapter = adapterHost.httpAdapter;httpAdapter - bu underlying freymvork ishlatayotgan haqiqiy HTTP adapter instansiyasi. U ExpressAdapter yoki FastifyAdapter instansiyasi bo'ladi (ikkala class ham AbstractHttpAdapter ni extend qiladi).
Adapter obyekti HTTP server bilan ishlash uchun bir nechta foydali metodlarni expose qiladi. Agar kutubxona instansiyasining o'ziga (masalan, Express instansiyasiga) bevosita murojaat qilmoqchi bo'lsangiz, getInstance() metodini chaqiring.
1const instance = httpAdapter.getInstance();Listening hodisasi
Server kiruvchi so'rovlarni tinglashni boshlaganda biror amal bajarish uchun quyidagidek listen$ stream'iga subscribe bo'lishingiz mumkin:
1this.httpAdapterHost.listen$.subscribe(() =>
2 console.log('HTTP server is listening'),
3);Bundan tashqari, HttpAdapterHost server hozir faol va tinglayotganini bildiruvchi listening boolean xossasini taqdim etadi:
1if (this.httpAdapterHost.listening) {
2 console.log('HTTP server is listening');
3}