Я создаю приложение для мобильного приложения. Помимо обслуживания клиента, у него будет несколько функций бэк-офиса.
Мы используем swagger , и мы хотим иметь возможность доступа к документам о фаге наших конечных точек бэк-офиса. Однако мы не хотим обнародовать все наши конечные точки.
Предполагая, что общедоступность всех конечных точек является плохим вариантом, решение, о котором мы думаем, - это позволить нашему серверу обслуживать два порта, а затем выставить общедоступный только один порт. Мы создали небольшой пример репо , который обслуживает клиентский модуль и модуль бэк-офиса на двух разных портах.
main.ts
выглядит следующим образом:
import { NestFactory } from '@nestjs/core';
import { ClientModule } from './modules/client/client.module';
import * as express from 'express';
import * as http from 'http';
import {ExpressAdapter} from '@nestjs/platform-express';
import { BackOfficeModule } from './modules/backoffice/backoffice.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
async function bootstrap() {
const clientServer = express();
const clientApp = await NestFactory.create(
ClientModule,
new ExpressAdapter(clientServer),
);
const clientOptions = new DocumentBuilder()
.setTitle('ClientServer')
.setDescription('The client server API description')
.setVersion('1.0')
.addTag('client')
.build();
const clientDocument = SwaggerModule.createDocument(clientApp, clientOptions);
SwaggerModule.setup('api', clientApp, clientDocument);
await clientApp.init();
const backOfficeServer = express();
const backOfficeApp = await NestFactory.create(
BackOfficeModule,
new ExpressAdapter(backOfficeServer),
);
const backOfficeOptions = new DocumentBuilder()
.setTitle('BackOffice')
.setDescription('The back office API description')
.setVersion('1.0')
.addTag('backOffice')
.build();
const backOfficeDocument = SwaggerModule.createDocument(backOfficeApp, backOfficeOptions);
SwaggerModule.setup('api', backOfficeApp, backOfficeDocument);
await backOfficeApp.init();
http.createServer(clientServer).listen(3000); // The public port (Load balancer will route traffic to this port)
http.createServer(backOfficeServer).listen(4000); // The private port (Will be accessed through a bastian host or similar)
}
bootstrap();
Другим вариантом было бы создание большего разделения кодовой базы и инфраструктуры, однако, поскольку это очень ранняя стадия, мы считаем, что в этом нет необходимости.
Наш вопрос к Nest сообщество таким образом, кто-нибудь сделал это? Если да, то каков ваш опыт? Каковы недостатки такого разделения нашего внутреннего кода?