![](/img/trans.png)
[英]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.