【问题标题】:@ApiImplicitQuery swagger - can't configure 'enum'@ApiImplicitQuery 招摇 - 无法配置“枚举”
【发布时间】:2019-01-10 02:23:42
【问题描述】:

您可以在nest swagger documentation 中看到如何配置枚举,但它不起作用。

import {SwaggerEnumType} from '../types/swagger-enum.type';

export declare const ApiImplicitQuery: (metadata: {
    name: string;
    description?: string;
    required?: boolean;
    type?: 'String' | 'Number' | 'Boolean' | any;
    enum?: SwaggerEnumType;
    isArray?: boolean;
    collectionFormat?: "csv" | "ssv" | "tsv" | "pipes" | "multi";
}) => MethodDecorator;

您可以在上面看到我在 swagger 模块的代码中所做的更改。下面你可以看到我的代码。

 @ApiImplicitQuery({name: "orderBy", enum: ['Admin', 'Moderator', 'User']})
    @ApiResponse({status: 200, description: "Successful getting registration list for admin"})
    @Get('registrations/list')
    public async getAdmin(@Req() req, @Res() res: Response,
                          @Query('page') page: number,
                          @Query('perPage') perPage: number,
                          @Query('orderBy') orderBy: UserRole = UserRole.User,
                          @Query('orderDir') orderDir: number
    ) {
        try {
            let token = await getCompaignIdFromAdminToken(req.headers['authorization']);
            let helper: HelperClass = new HelperClass();
            await helper.isUserAdmin(token);
            let users = await this.adminFacade.getAllUsersList(orderBy, orderDir);
            let entity = await this.adminFacade.parseRegistrationUsersList(users);
            let pagePar = (page) ? page : 0;
            let perPagePar = (perPage) ? perPage : users.length;
            let response = await returnResponseByPageAndPerPageValues(entity, pagePar, perPagePar);
            res.status(HttpStatus.OK).json({response: response, entries: users.length});
        } catch (err) {
            errorResponse(res, err.message, HttpStatus.BAD_REQUEST);
        }
    }

export enum UserRole {
    Admin = 'Admin',
    Moderator = 'Moderator',
    User = 'User'
}

您可以在下面看到生成的 swagger 文档:

我做错了什么?

【问题讨论】:

  • v5.2.0 版本刚刚发布! :-)

标签: javascript node.js swagger nestjs


【解决方案1】:

8 月 18 日更新

拉取请求刚刚合并,在版本 v5.2.0 中可用。

原帖

引入enumApiImplicitQuery 的支持的pull request 尚未合并,因此该功能尚不可用。不幸的是,文档更新得太早了:

文档已更新,但代码未更新。

关注拉取请求,以便在该功能可用时收到通知。然后你可以更新@nestjs/swagger 包。

【讨论】:

  • 我已经用过了。谢谢)我还想知道什么时候可以通过招摇来上传文件。我的意思是如何使用这个库在有效负载中附加文件?如果你有答案,将不胜感激。
  • 我不确定我是否理解正确。您是想要一个一般的文件上传端点,还是想要在您的 swagger 文档中记录一个现有的端点?我建议打开一个新问题并更详细地描述您的要求。其他人也可能会发现这很有用。 :-) 如果您的枚举问题解决了,您可以将其中一个答案标记为已接受,以便其他人可以看到他的问题已解决。
【解决方案2】:

不完全是一个答案,而且我希望这比评论更明确。

我是此功能的 PR 的作者。我什至在提交文档相关部分的 PR 之前就提交了 PR。但是,合并了相关文档的 PR,而没有合并实现 PR。已经一个多月了,我还没有收到 Kamil(NestJS 的作者)的任何消息。我认为他现在太忙了,因为整个框架只有两个人在工作:Kamil 本人和 ThomRick (NestCLI)。

我希望,有足够多的请求和压力,Kamil 会真正查看@nestjs/swagger 上的 PR。目前,我建议您处理您的 Controller 以期望 准确 string 不幸。

【讨论】:

  • 你能告诉我什么时候可以工作吗?我们的测试团队非常需要它。是的,我们可以在没有枚举的情况下工作)但是如果我们有枚举工作,那么测试smth 会容易得多。感谢您的帮助
  • 只想更新,PR 40 分钟前被合并 (github.com/nestjs/swagger/pull/102)
猜你喜欢
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
相关资源
最近更新 更多