
[英]How to validate dynamic property-name on REST API in nest.js app?
[英]Nest JS validate data from an external API using global pipes
我正在开发一个 Nestjs 项目。 在这里,我从另一个 rest API 获取数据。我从 API 获取数据并将其存储在我的数据库中。 但是,我需要验证我得到的 API 中的数据。 我如何使用class-validator
来做到这一点?
我在 main.ts 文件中使用了全局 pipe,例如 -
app.useGlobalPipes(
new ValidationPipe({
transform: true,
whitelist: true,
}),
);
我已经正确地创建了我的 DTO。 像我创建的 DTO 示例是 -
export class DataDTO {
@IsString()
name: string;
@IsInt()
@Min(0)
@Max(100)
age: number;
}
我的 controller 代码如下 -
@Get()
async getData() {
const data: DataDTO = await fetchDataFromExternalAPI();
}
我得到任何数据作为data
值。 这里没有异常或错误发生。 需要专家的一些帮助。
管道仅适用于对您的服务器的请求。 如果您想验证从外部源检索的数据,您仍然可以像现在这样使用DTO
,但是您需要使用class-transformer
的plainToInstance
来获取数据并创建 DTO 的实例,然后使用class-validator
的validate
来检查实例是否符合您的预期。
@Get()
async getData() {
cosnt data: DataDto = await fetchDataFromExternalAPI();
const dataInstance = plainToInstance(DataDto, data);
const validated = validate(dataInstance)
if (validated.errors.length) {
throw mapErrorsToErrorObject(validated.errors)
}
return doTheRestOfLogic(dataInstance);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.