我已经使用NestJS以及@nestjs/swagger
和swagger-ui-express
为API文档构建了一个项目。
现在我的文档可以通过/api/docs
路径访问,但这是绝对公开的,一旦我将其部署到云上,任何人都可以访问它,但我不想这样做,尽管大多数API都需要Bearer令牌,不幸的是,其中一些仍然公开。
在用户访问我的swagger文档之前,我有没有办法拥有一个用于验证用户身份的登录屏幕
这是我设置文档的代码:
import { INestApplication } from '@nestjs/common';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import {
SWAGGER_API_ROOT,
SWAGGER_API_NAME,
SWAGGER_API_DESCRIPTION,
SWAGGER_API_CURRENT_VERSION,
} from './constants';
export const setupSwagger = (app: INestApplication) => {
const options = new DocumentBuilder()
.setTitle(SWAGGER_API_NAME)
.setDescription(SWAGGER_API_DESCRIPTION)
.setVersion(SWAGGER_API_CURRENT_VERSION)
.addBearerAuth()
.build();
const document = SwaggerModule.createDocument(app, options);
SwaggerModule.setup(SWAGGER_API_ROOT, app, document);
};
如果只在开发模式下设置文档会怎样?您可以创建一个环境var DEV=true或false。部署后,将其设置为false并使用进行验证
if (process.env.DEV) {
export const setupSwagger = (app: INestApplication) => {
const options = new DocumentBuilder()
.setTitle(SWAGGER_API_NAME)
.setDescription(SWAGGER_API_DESCRIPTION)
.setVersion(SWAGGER_API_CURRENT_VERSION)
.addBearerAuth()
.build();
const document = SwaggerModule.createDocument(app, options);
SwaggerModule.setup(SWAGGER_API_ROOT, app, document);
};
}
公正和理念