Router moduli
HTTP ilovada (masalan, REST API) handler uchun route path controller uchun e'lon qilingan ixtiyoriy prefix (@Controller dekoratori ichida) bilan metod dekoratorida berilgan path'ni
Bu bo'lim faqat HTTP asosidagi ilovalar uchun tegishli.
HTTP ilovada (masalan, REST API) handler uchun route path controller uchun e'lon qilingan ixtiyoriy prefix (@Controller dekoratori ichida) bilan metod dekoratorida berilgan path'ni (masalan, @Get('users')) birlashtirish orqali aniqlanadi. Bu haqda ko'proq ushbu bo'limda o'qishingiz mumkin. Bundan tashqari, ilovangizdagi barcha route'lar uchun global prefix belgilashingiz yoki versioning ni yoqishingiz mumkin.
Ba'zi edge case'larda prefix'ni modul darajasida belgilash ham qulay bo'lishi mumkin, ya'ni shu modul ichida ro'yxatdan o'tgan barcha controller'lar uchun bir xil prefix ishlatiladi.
Masalan, ilovangizning "Dashboard" deb nomlangan qismi foydalanadigan bir nechta endpoint'larni expose qiladigan REST ilovani tasavvur qiling.
Bunday holatda har bir controller ichida /dashboard prefix'ini takrorlash o'rniga, quyidagicha utility RouterModule modulidan foydalanishingiz mumkin:
1@Module({
2 imports: [
3 DashboardModule,
4 RouterModule.register([
5 {
6 path: 'dashboard',
7 module: DashboardModule,
8 },
9 ]),
10 ],
11})
12export class AppModule {}RouterModule class'i @nestjs/core package'idan export qilinadi.
Bundan tashqari, ierarxik strukturalar ham belgilashingiz mumkin. Bu degani har bir modul children modullarga ega bo'lishi mumkin.
Child module'lar parent module prefix'ini meros qilib oladi. Quyidagi misolda AdminModule ni DashboardModule va MetricsModule uchun parent module sifatida ro'yxatdan o'tkazamiz.
1@Module({
2 imports: [
3 AdminModule,
4 DashboardModule,
5 MetricsModule,
6 RouterModule.register([
7 {
8 path: 'admin',
9 module: AdminModule,
10 children: [
11 {
12 path: 'dashboard',
13 module: DashboardModule,
14 },
15 {
16 path: 'metrics',
17 module: MetricsModule,
18 },
19 ],
20 },
21 ])
22 ],
23});Bu imkoniyatdan juda ehtiyotkorlik bilan foydalanish kerak, chunki uni ortiqcha ishlatish vaqt o'tishi bilan kodni maintain qilishni qiyinlashtirishi mumkin.
Yuqoridagi misolda DashboardModule ichida ro'yxatdan o'tgan istalgan controller qo'shimcha /admin/dashboard prefix'iga ega bo'ladi, chunki modul path'larni yuqoridan pastga, ya'ni parent'dan child'ga rekursiv tarzda birlashtiradi.
Xuddi shuningdek, MetricsModule ichida aniqlangan har bir controller ham qo'shimcha /admin/metrics modul darajasidagi prefix'ga ega bo'ladi.