FAQ1 min read

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.

TypeScript
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).

TypeScript
1export class CatsService {
2  constructor(private adapterHost: HttpAdapterHost) {}
3}
Hint

HttpAdapterHost@nestjs/core paketidan import qilinadi.

HttpAdapterHost haqiqiy HttpAdapter emas. Haqiqiy HttpAdapter instansiyasini olish uchun shunchaki httpAdapter xossasiga murojaat qiling.

TypeScript
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.

TypeScript
1const instance = httpAdapter.getInstance();

Listening hodisasi

Server kiruvchi so'rovlarni tinglashni boshlaganda biror amal bajarish uchun quyidagidek listen$ stream'iga subscribe bo'lishingiz mumkin:

TypeScript
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:

TypeScript
1if (this.httpAdapterHost.listening) {
2  console.log('HTTP server is listening');
3}