📅  最后修改于: 2023-12-03 14:53:40.236000             🧑  作者: Mango
在 NestJS 中,我们通常需要将传入的 JSON 数据解析成对象,并进行相应的操作。本文将介绍如何对 JSON 数据进行解析,并转换成对象。
在开始之前,我们需要安装 body-parser
这个依赖,它能够将传入的 JSON 数据进行解析,并转换成对象。
npm install --save @nestjs/common @nestjs/platform-express body-parser
在 NestJS 中,我们需要在 main.ts
文件中添加如下代码:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as bodyParser from 'body-parser';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.use(bodyParser.json());
await app.listen(3000);
}
bootstrap();
这段代码的作用是引入依赖,并使用 body-parser
中间件进行解析。
当我们接收到一个 JSON 数据时,我们需要将其解析成对象。在 NestJS 中,我们可以使用 @Body()
装饰器来获取请求体中的数据,例如:
import { Controller, Post, Body } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
@Controller('users')
export class UsersController {
@Post()
async create(@Body() createUserDto: CreateUserDto) {
// ...
}
}
其中,CreateUserDto
是一个数据传输对象,用于验证传入的数据是否符合要求,可根据实际情况进行定义。
在上面的 create()
方法中,我们可以添加数据验证逻辑,例如:
import { Controller, Post, Body, HttpException, HttpStatus } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
@Controller('users')
export class UsersController {
@Post()
async create(@Body() createUserDto: CreateUserDto) {
if (!createUserDto.name) {
throw new HttpException('Name cannot be empty.', HttpStatus.BAD_REQUEST);
}
if (!createUserDto.age) {
throw new HttpException('Age cannot be empty.', HttpStatus.BAD_REQUEST);
}
// ...
}
}
如果传入的数据不符合要求,则会抛出一个 HTTP 异常,返回对应的错误信息和状态码。
本文介绍了如何在 NestJS 中解析 JSON 数据,并将其转换成对象。同时,还介绍了数据验证的方法,可以根据实际情况进行使用。