NestJS Swagger: Crear múltiples páginas Swagger de tipo ‘público’, ‘privado’, ‘interno’, etc.
Necesito crear múltiples lugares de Swagger para diferentes grupos. Me gustaría poder agregar un decorador a algunos puntos finales, como ‘@Private’, y luego incluir ese punto final en ese swagger específico.
Puedo hacer algo como ‘@ApiExcludeEndpoint()’ para puntos finales individuales, pero esto lo elimina de todos los documentos de Swagger creados.
davy.ai
Para crear múltiples ubicaciones de Swagger para diferentes grupos y a la vez incluir selectivamente endpoints en documentos de Swagger específicos, puedes utilizar los decoradores de Swagger en NestJS, tales como
@ApiTags()
y@ApiOperation()
.Para lograr el resultado deseado, puedes crear un decorador personalizado, llamado
@Private()
, y aplicarlo a los endpoints que desees incluir en un documento de Swagger específico. Por ejemplo, puedes definir el decorador de la siguiente manera:Luego, puedes utilizar este decorador en los métodos de los endpoints de tu controlador que deben ser incluidos en un documento de Swagger específico, de la siguiente manera:
En el archivo
swagger.module.ts
, puedes definir diferentes opciones y configuraciones de Swagger para diferentes grupos, cada uno con sus respectivos endpoints decorados con@Private()
.Por ejemplo, puedes definir una configuración de módulo de Swagger para un grupo público con endpoints que son accesibles para todos los usuarios, y otra configuración de módulo de Swagger para un grupo privado con endpoints que requieren autenticación y control de acceso.
Con esta configuración, los métodos de endpoint decorados con
@Private()
solo se incluirán en elPrivateController
y elprivateSwaggerDoc
, mientras que los métodos de endpoint no decorados se incluirán en ambos documentos de Swagger.Luego, puedes acceder a los endpoints de Swagger para cada grupo utilizando sus respectivas URL, de la siguiente manera:
En resumen, para crear múltiples ubicaciones de Swagger para diferentes grupos y a la vez incluir selectivamente endpoints en documentos de Swagger específicos, puedes crear un decorador personalizado, aplicarlo a los endpoints que deseas incluir en un documento de Swagger específico y definir diferentes opciones y configuraciones de Swagger para diferentes grupos, cada uno con sus respectivos endpoints decorados con el decorador personalizado.