首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NestJS Swagger -如何声明多选枚举字段?

NestJS Swagger是一个用于生成API文档和交互式测试界面的工具。它基于OpenAPI规范(以前称为Swagger规范)并与NestJS框架集成,可以自动生成API文档,包括请求和响应的结构、参数、路径等信息。

在NestJS Swagger中声明多选枚举字段可以通过使用装饰器@ApiProperty()来实现。以下是声明多选枚举字段的步骤:

  1. 首先,确保你的NestJS应用已经安装并配置了@nestjs/swagger模块。
  2. 在你的DTO(数据传输对象)或实体类中,使用@ApiProperty()装饰器来声明多选枚举字段。例如,假设你有一个名为UserDto的DTO类,其中有一个名为roles的字段,它是一个多选枚举字段,可以选择多个角色:
代码语言:txt
复制
import { ApiProperty } from '@nestjs/swagger';

export class UserDto {
  @ApiProperty({
    enum: ['admin', 'user', 'guest'],
    enumName: 'UserRole',
    isArray: true,
  })
  roles: string[];
}

在上面的例子中,enum属性指定了可选的枚举值,enumName属性指定了枚举的名称,isArray属性设置为true表示这是一个数组类型的字段。

  1. 在你的控制器类中,使用@ApiBody()装饰器将DTO类与请求体关联起来。例如:
代码语言:txt
复制
import { Controller, Post, Body } from '@nestjs/common';
import { ApiBody } from '@nestjs/swagger';
import { UserDto } from './user.dto';

@Controller('users')
export class UsersController {
  @Post()
  @ApiBody({ type: UserDto })
  createUser(@Body() userDto: UserDto) {
    // 处理创建用户的逻辑
  }
}

在上面的例子中,@ApiBody()装饰器将UserDto类与createUser()方法的请求体关联起来。

这样,当你使用NestJS Swagger生成API文档时,它将会显示roles字段是一个多选枚举字段,可选的枚举值为adminuserguest

推荐的腾讯云相关产品:腾讯云API网关(API Gateway)可以帮助您快速构建、发布、运维和安全管理API,提供了丰富的功能和工具来管理和保护API。您可以通过以下链接了解更多信息:腾讯云API网关产品介绍

请注意,以上答案仅供参考,具体的实现方式可能会根据您的实际需求和环境而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Nest.js 从零到壹系列(七):讨厌写文档,Swagger UI 了解一下?

- 覃超的回答 - 知乎[2] Swagger 之旅 初始化 Swagger $ yarn add @nestjs/swagger swagger-ui-express -S 安装完依赖包后,只需要在...: string | number; } 保存,刷新页面(该页面没有热加载功能),再看看效果: 看到已经有了字段信息了,但是我们的 role 字段是【可选】的,而文档中是【必填】的,接下来再完善一下描述...那么,如何Swagger 中登录呢?.../user.dto'; import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; @ApiBearerAuth() // Swagger 的...本篇只是抛砖引玉, Swagger UI 还有很多可配置的玩法,比如数组应该怎么写,枚举应该怎么弄,如何设置请求头等等,因为篇幅原因,就不在这里展开了。

4.6K10
  • nest.js 添加 swagger 响应数据文档

    基本使用​ 通常情况下,在 nest.js 的 swagger 页面文档中的响应数据文档默认如下 此时要为这个控制器添加响应数据文档的话,只需要先声明 数据的类型,然后通过@ApiResponse...要实现这种数据结构字段,首先定义一个自定义类用于包装,如 res.model.ts export class ResOp { @ApiProperty({ type: 'object.../common' import { ApiExtraModels, ApiResponse, getSchemaPath } from '@nestjs/swagger' import { ResOp...ref: getSchemaPath(ResOp) } 表示原始数据,要被“塞”到那个类下,而第二个参数 properties: { data: prop } 则表示 ResOp 的 data 属性要如何替换...,替换的部分则由 prop 变量决定,只需要根据实际需求构造相应的字段结构。

    36020

    Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换

    ParseBoolPipe:将字符串类型的参数转换为布尔值ParseArrayPipe:将字符串形式的数组转换为数组ParseUUIDPipe:解析字符串并验证是否为 UUIDParseEnumPipe:将传入的值转换为枚举类型中的成员...types.includes(metatype); } } 3、 main.ts 中全局注册: import { NestFactory } from '@nestjs/core'; import.../swagger';import { IsNotEmpty, IsNumber, IsOptional, IsUUID } from 'class-validator';export class SavePostDto...;}如果我们提交的请求体中缺少了参数,它就会提示:2、假如我们有一个查询岗位详情的接口如下:import { Body, Controller, Get, ParseUUIDPipe} from '@nestjs.../common';import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger'; // swagger 接口文档import

    17310

    【Nest教程】Nest项目集成JWT接口认证

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO...JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。.../passport @nestjs/jwt -S 4 创建Auth模块 src下新建文件夹logical/auth,auth目录下为我们逻辑功能。.../user/user.module'; import { PassportModule } from '@nestjs/passport'; import { JwtModule } from '@nestjs.../swagger'; import { Controller, Post, Body, Logger, HttpCode, UseGuards, } from '@nestjs/

    2.9K1311

    使用NestJS搭建服务端应用

    安装nest依赖包 我们打开刚才创建的package.json文件,添加如下所示的字段: { "dependencies": { "@nestjs/common": "^8.1.1",...private readonly appService: AppService) {} @Post("setTitle") setTitle(){ // 此处省略了较多代码,这里的重点是演示如何调用我们刚才写好的方法...举个例子,我们需要在声明5个方法,分别如下所示: getTitle getName getAge setName setTitle 实现代码 在TypeScript中用interface关键字来声明一个接口...封装工具类 我们在src目录下创建VO文件夹,在其目录下创建ResultVO.ts文件,代码如下所示: 简单创建了一个类,添加了三个字段 为每个字段写了get和set方法 export class ResultVO...那么,当我们把这些数据统一在枚举层进行定义,在业务代码中直接使用我们定义好的枚举,这个问题就迎刃而解了。

    2.1K40

    JAVA中自定义扩展Swagger的能力,自动通过枚举类生成参数取值含义描述的实现策略

    扩展可行性分析 既然想要改变生成的Swagger文档中指定字段的描述内容,那么首先就应该是要搞清楚Swagger中现在的内容生成逻辑是如何处理的。我们以@ApiParam为例进行分析。...现在又遇到一个问题,枚举类的实现形式其实也不一样,要如何才能让我们的自动内容生成服务知道获取枚举类中的哪些内容进行处理呢?...先来看下面给定的这个枚举类,其中包含order、value、desc三个属性值,而value字段是我们的接口字段需要传入的真实取值,desc是其对应的含义描述,那么该如何让我们自定义Swagger扩展类知晓应该使用...@SwaggerDisplayEnum并指定下字段的映射,即可用于Swagger注解中: 到这里呢,我们需要的数据来源以及取值转换规则就已经全部确定,剩下的就是如何将一个枚举类中需要的值与描述字段给拼接成想要的内容了...总结 好啦,关于如何通过自定义注解的方式扩展Swagger的能力让Swagger支持自动从指定的枚举类生成接口文档中的字段描述的实现思路,这里就给大家分享到这里啦。

    3.5K40

    使用NestJs、GraphQL、TypeORM搭建后端服务

    传入一个字符串作为参数,这个名称将用于生成表的名称,使用方式@Entity('table_name') Column:列装饰器,将一个字段声明为一个数据表的一个字段,可以设置字段的数据类型,基础的校验方式...,使用方式@Column('varchar', { length: 500, unique: true }) PrimaryGeneratedColumn:主键装饰器,将一个字段声明为主键,对应数据库表字段的主键...4.2、GraphQL基本方法说明与Schema声明 首先GraphQL常用的几个装饰器方法分别是: ObjectType:声明一个Schema(数据结构),对一个类进行装饰,用于声明这个Object的各个字段以及他们的类型...Field:声明一个属性,这个属性属于ObjectType在进行API查询的时候将会用于解释一个字段,它对类的一个属性进行装饰,使用方式:@Field。...这个类声明了四个只读属性的字段,并且定义了输入的数据类型。

    6.6K10
    领券