Nestjs 如何使用 @nestjs/swagger 生成有关 Passport 策略路线的文档

jan*_*w a 3 nestjs

我正在使用@nestjs/swagger来生成 api 文档。但是如何为经过身份验证的路由生成文档呢?

\n\n

巢版

\n\n
\xce\xbb nest i\nNodeJS Version : v10.16.0\n[Nest Information]\nplatform-express version : 6.0.0\npassport version         : 6.1.0\nswagger version          : 3.1.0\ncommon version           : 6.0.0\ncore version             : 6.0.0\njwt version              : 6.1.1\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是正常的路线,我可以使用“@ApiImplicitBody”来制作文档:

\n\n
  @Delete()\n  @ApiImplicitBody({\n    name: \'id\',\n    required: true,\n    type: String,\n  })\n  @ApiOkResponse({\n    description: \'successfully deleted\',\n  })\n  delete(@Body(\'id\') typeId) {\n    return this.typesService.delete(typeId);\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

该路由需要身份验证,我如何记录此类路由?

\n\n
  @UseGuards(AuthGuard(\'local\'))\n  @Post(\'login\')\n  @ApiOkResponse({\n    description: \'result Token\',\n  })\n  async login(@Request() req) {\n    return this.authService.login(req.user);\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我查看了Swagger文档并尝试了\'@nestjs/swagger\'包中的一些api,但它不起作用。

\n

jan*_*w a 5

这样就达到了我想要的结果:

\n\n

路线:

\n\n
import { UserLoginDto } from './dto/user-login.dto';\n\n  @UseGuards(AuthGuard('local'))\n  @Post('login')\n  @ApiImplicitBody({ name: '', type: UserLoginDto, })\n  @ApiOkResponse({ description: 'result Token' })\n  async login(@Request() req) {\n    return this.authService.login(req.user);\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

用户登录:

\n\n
import { IsNotEmpty, IsString } from 'class-validator';\nimport { ApiModelProperty } from '@nestjs/swagger';\n\nexport class UserLoginDto {\n  @IsString()\n  @IsNotEmpty()\n  @ApiModelProperty({ example: 'ajanuw', description: '\xe8\xb4\xa6\xe5\x8f\xb7' })\n  readonly username: string;\n\n  @IsString()\n  @IsNotEmpty()\n  @ApiModelProperty({\n    example: '123456',\n    description: '\xe5\xaf\x86\xe7\xa0\x81',\n  })\n  readonly password: string;\n}\n
Run Code Online (Sandbox Code Playgroud)\n