您如何称呼以下函数签名中的“@Body()”:"create(@Body() createCatDto: CreateCatDto) {}" in typescript/nestjs
What do you call the "@Body()" in the following function signature: "create(@Body() createCatDto: CreateCatDto) {}" in typescript/nestjs
我正在尝试学习 NestJS,我注意到它们 documentation 上的以下函数签名:
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
第一次看到参数名前的@Body()
。它是什么?你怎么称呼它?它看起来像一个装饰器,但感觉它以某种方式转换了参数,但我认为这就是参数类型的意义所在吧?
此致,
这些被称为参数装饰器你可以进一步阅读这个以获得更好的解释
https://docs.nestjs.com/custom-decorators#param-decorators
针对您的问题@Body() 是一个参数装饰器,它将您传入的 JSON 有效负载解析为 Dto (数据传输对象) 提供的结构(Dto 可以是一个 class 或者可以是一个接口)。
例如假设以下 Dto 结构:
export class CreateCatDto {
name: string;
age: number;
breed: string;
}
此结构期望 client-side 传递以下结构 JSON
{
"name" : "abc",
"age" : 22,
"breed" : "abc"
}
然后 @Body() 参数装饰器将传入的 JSON 有效负载解析为提供的 Dto。
因此,您可以简单地以 class 对象或界面的形式获得 JSON 值,如下所示:
@Post()
async create(@Body() createCatDto: CreateCatDto) {
console.log(createCatDto.name);
console.log(createCatDto.age);
console.log(createCatDto.breed);
this.catsService.create(createCatDto);
}
注意:任何参数缺失都会导致Dto中未定义。
我正在尝试学习 NestJS,我注意到它们 documentation 上的以下函数签名:
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
第一次看到参数名前的@Body()
。它是什么?你怎么称呼它?它看起来像一个装饰器,但感觉它以某种方式转换了参数,但我认为这就是参数类型的意义所在吧?
此致,
这些被称为参数装饰器你可以进一步阅读这个以获得更好的解释 https://docs.nestjs.com/custom-decorators#param-decorators
针对您的问题@Body() 是一个参数装饰器,它将您传入的 JSON 有效负载解析为 Dto (数据传输对象) 提供的结构(Dto 可以是一个 class 或者可以是一个接口)。
例如假设以下 Dto 结构:
export class CreateCatDto {
name: string;
age: number;
breed: string;
}
此结构期望 client-side 传递以下结构 JSON
{
"name" : "abc",
"age" : 22,
"breed" : "abc"
}
然后 @Body() 参数装饰器将传入的 JSON 有效负载解析为提供的 Dto。
因此,您可以简单地以 class 对象或界面的形式获得 JSON 值,如下所示:
@Post()
async create(@Body() createCatDto: CreateCatDto) {
console.log(createCatDto.name);
console.log(createCatDto.age);
console.log(createCatDto.breed);
this.catsService.create(createCatDto);
}
注意:任何参数缺失都会导致Dto中未定义。