Swagger UI:如何隐藏Nest.js控制器方法参数输入字段?

avkwfej4  于 2023-01-17  发布在  其他
关注(0)|答案(2)|浏览(216)

我正在将Swagger UI 4添加到现有的Nest.js7项目中。
Nest.js控制器方法参数有@Headers装饰器。
我为方法添加了@ApiBearerAuth nest.js装饰器。

@ApiBearerAuth('MyAuth')
    @Get()
    async getEmployees(
        @Headers('Authorization')
        auth: string,

        @Query() query: EmployeesQuery,
    ) {

结果是我在Swagger UI中同时有Authorization头输入字段和锁图标按钮。锁图标按钮授权工作。Authorization头输入字段不工作,Swagger UI要求填充它(输入值实际上被Nest.js忽略)。
我怎样才能使 Swagger 授权字段成为不需要和隐藏?

j2datikz

j2datikz1#

发现如何使不需要:

@ApiBearerAuth('MyAuth')
    @ApiParam({
        name: 'Authorization',
        required: false,
        description:
            '(Leave empty. Use lock icon on the top-right to authorize)',
    })
    @Get()
    async getEmployees(
        @Headers('Authorization') auth: string,
        @Query() query: EmployeesQuery,
    ) {

lmyy7pcs

lmyy7pcs2#

另一种方法是使用**@Req()代替@Headers()**。

@Get()
async getEmployees(
    @Req() req: Request,
    @Query() query: EmployeesQuery,
  ): Promise<Employees[]> {
  const token = req.headers.authorization;
  .
  .
  .

注意:从express导入类型Request

import { Request } from 'express';

相关问题