Boshqa imkoniyatlar
Bu sahifada foydali bo'lishi mumkin bo'lgan boshqa imkoniyatlar keltirilgan.
Bu sahifada foydali bo'lishi mumkin bo'lgan boshqa imkoniyatlar keltirilgan.
Global prefiks
setGlobalPrefix() orqali yo'llar uchun o'rnatilgan global prefiksni inkor qilish uchun ignoreGlobalPrefix dan foydalaning:
1const document = SwaggerModule.createDocument(app, options, {
2 ignoreGlobalPrefix: true,
3});Global parametrlari
Quyida ko'rsatilganidek DocumentBuilder yordamida barcha yo'llar uchun parametrlarni belgilashingiz mumkin:
1const config = new DocumentBuilder()
2 .addGlobalParameters({
3 name: 'tenantId',
4 in: 'header',
5 })
6 // other configurations
7 .build();Global javoblar
DocumentBuilder yordamida barcha yo'llar uchun global javoblarni belgilashingiz mumkin. Bu ilovangizdagi barcha endpointlar bo'yicha bir xil javoblarni (masalan, 401 Unauthorized yoki 500 Internal Server Error kabi xato kodlarini) sozlashda foydali.
1const config = new DocumentBuilder()
2 .addGlobalResponse({
3 status: 500,
4 description: 'Internal server error',
5 })
6 // other configurations
7 .build();Bir nechta spetsifikatsiyalar
SwaggerModule bir nechta spetsifikatsiyalarni qo'llab-quvvatlash usulini taqdim etadi. Boshqacha aytganda, turli endpointlarda turli UI lar bilan turli hujjatlarni taqdim etishingiz mumkin.
Bir nechta spetsifikatsiyani qo'llab-quvvatlash uchun ilovangiz modular yondashuvda yozilishi kerak. createDocument() metodi uchinchi argument sifatida extraOptions ni qabul qiladi, unda include nomli xususiyat mavjud obyekt bo'ladi. include xususiyati modul massivini qabul qiladi.
Bir nechta spetsifikatsiyalarni quyidagicha sozlashingiz mumkin:
1import { NestFactory } from '@nestjs/core';
2import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
3import { AppModule } from './app.module';
4import { CatsModule } from './cats/cats.module';
5import { DogsModule } from './dogs/dogs.module';
6
7async function bootstrap() {
8 const app = await NestFactory.create(AppModule);
9
10 /**
11 * createDocument(application, configurationOptions, extraOptions);
12 *
13 * createDocument method takes an optional 3rd argument "extraOptions"
14 * which is an object with "include" property where you can pass an Array
15 * of Modules that you want to include in that Swagger Specification
16 * E.g: CatsModule and DogsModule will have two separate Swagger Specifications which
17 * will be exposed on two different SwaggerUI with two different endpoints.
18 */
19
20 const options = new DocumentBuilder()
21 .setTitle('Cats example')
22 .setDescription('The cats API description')
23 .setVersion('1.0')
24 .addTag('cats')
25 .build();
26
27 const catDocumentFactory = () =>
28 SwaggerModule.createDocument(app, options, {
29 include: [CatsModule],
30 });
31 SwaggerModule.setup('api/cats', app, catDocumentFactory);
32
33 const secondOptions = new DocumentBuilder()
34 .setTitle('Dogs example')
35 .setDescription('The dogs API description')
36 .setVersion('1.0')
37 .addTag('dogs')
38 .build();
39
40 const dogDocumentFactory = () =>
41 SwaggerModule.createDocument(app, secondOptions, {
42 include: [DogsModule],
43 });
44 SwaggerModule.setup('api/dogs', app, dogDocumentFactory);
45
46 await app.listen(process.env.PORT ?? 3000);
47}
48bootstrap();Endi serveringizni quyidagi buyruq bilan ishga tushirishingiz mumkin:
1$ npm run starthttp://localhost:3000/api/cats manziliga o'tib, mushuklar uchun Swagger UI ni ko'ring:
Xuddi shunday, http://localhost:3000/api/dogs itlar uchun Swagger UI ni ko'rsatadi:
Explorer panelidagi dropdown
Explorer paneli dropdown menyusida bir nechta spetsifikatsiyalarni qo'llab-quvvatlash uchun explorer: true ni o'rnating va SwaggerCustomOptions ichida swaggerOptions.urls ni sozlang.
swaggerOptions.urls Swagger hujjatlaringizning JSON formatiga ishora qilayotganiga ishonch hosil qiling! JSON hujjatini ko'rsatish uchun SwaggerCustomOptions ichida jsonDocumentUrl dan foydalaning. Qo'shimcha sozlash variantlari uchun bu yerga qarang.
Explorer paneli dropdownidan bir nechta spetsifikatsiyalarni quyidagicha sozlash mumkin:
1import { NestFactory } from '@nestjs/core';
2import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
3import { AppModule } from './app.module';
4import { CatsModule } from './cats/cats.module';
5import { DogsModule } from './dogs/dogs.module';
6
7async function bootstrap() {
8 const app = await NestFactory.create(AppModule);
9
10 // Main API options
11 const options = new DocumentBuilder()
12 .setTitle('Multiple Specifications Example')
13 .setDescription('Description for multiple specifications')
14 .setVersion('1.0')
15 .build();
16
17 // Create main API document
18 const document = SwaggerModule.createDocument(app, options);
19
20 // Setup main API Swagger UI with dropdown support
21 SwaggerModule.setup('api', app, document, {
22 explorer: true,
23 swaggerOptions: {
24 urls: [
25 {
26 name: '1. API',
27 url: 'api/swagger.json',
28 },
29 {
30 name: '2. Cats API',
31 url: 'api/cats/swagger.json',
32 },
33 {
34 name: '3. Dogs API',
35 url: 'api/dogs/swagger.json',
36 },
37 ],
38 },
39 jsonDocumentUrl: '/api/swagger.json',
40 });
41
42 // Cats API options
43 const catOptions = new DocumentBuilder()
44 .setTitle('Cats Example')
45 .setDescription('Description for the Cats API')
46 .setVersion('1.0')
47 .addTag('cats')
48 .build();
49
50 // Create Cats API document
51 const catDocument = SwaggerModule.createDocument(app, catOptions, {
52 include: [CatsModule],
53 });
54
55 // Setup Cats API Swagger UI
56 SwaggerModule.setup('api/cats', app, catDocument, {
57 jsonDocumentUrl: '/api/cats/swagger.json',
58 });
59
60 // Dogs API options
61 const dogOptions = new DocumentBuilder()
62 .setTitle('Dogs Example')
63 .setDescription('Description for the Dogs API')
64 .setVersion('1.0')
65 .addTag('dogs')
66 .build();
67
68 // Create Dogs API document
69 const dogDocument = SwaggerModule.createDocument(app, dogOptions, {
70 include: [DogsModule],
71 });
72
73 // Setup Dogs API Swagger UI
74 SwaggerModule.setup('api/dogs', app, dogDocument, {
75 jsonDocumentUrl: '/api/dogs/swagger.json',
76 });
77
78 await app.listen(3000);
79}
80
81bootstrap();Bu misolda asosiy API hamda mushuklar va itlar uchun alohida spetsifikatsiyalarni sozladik, ularning har biri explorer panelidagi dropdown orqali ochiladi.