es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo incluir solo un módulo específico en Nestjs Swagger.

const app = await NestFactory.create(AppModule);
app.useGlobalFilters(new AllExceptionsFilter());
app.enableCors();
app.useGlobalPipes(new ValidationPipe());

const config = new DocumentBuilder()
.setTitle(‘API’)
.setDescription(‘Node Api to connect’)
.setVersion(‘1.0.0’)
.build();

const option:SwaggerDocumentOptions = {
include: [() => DriverModule],
deepScanRoutes: true
}

const document = SwaggerModule.createDocument(app, config, option);
SwaggerModule.setup(‘api’, app, document);

await app.listen(8000);

//Tengo algunos módulos como el módulo de usuario (UserModule) y el módulo de conductor (DriverModule).
//Solo quiero que la API del módulo del conductor se muestre en Swagger.

//Sé que SwaggerModule.createDocument tiene un tercer parámetro para SwaggerOption.

//Pero después de escribir esto Swagger no muestra ninguna API. Recibo el mensaje “No hay operaciones definidas en la especificación” de Swagger en la interfaz de usuario.
//No puedo descubrir qué estoy haciendo mal.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mostrar solo la API del módulo del controlador en Swagger, puede usar la opción include en el parámetro SwaggerDocumentOptions del método SwaggerModule.createDocument. Esta opción espera un array de módulos para incluir en la documentación de Swagger.

    En su código, ya ha creado un objeto opción con la propiedad include configurada como [() => DriversModule]. Esto debería funcionar en teoría, pero debemos asegurarnos de que el DriversModule realmente tenga algunos puntos finales definidos con decoradores como @Controller o @Get.

    Si ha verificado que el DriversModule tiene puntos finales, el problema podría estar en el nombre de su módulo. Asegúrese de que el nombre del módulo importado DriversModule coincida con el nombre de la clase real del módulo DriverModule. NestJS utiliza el nombre de la clase del módulo para generar la ruta de punto final basada en el módulo, por lo que si los nombres no coinciden, Swagger puede no detectar los puntos finales.

    Otro problema posible podría estar relacionado con la versión de nestjs-swagger que está usando. Asegúrese de estar usando una versión compatible con su versión actual de NestJS.

    Si ninguna de las soluciones anteriores funciona, puede intentar depurar registrando la salida del método SwaggerModule.createDocument para ver si devuelve errores o resultados inesperados.

Comments are closed.