我有一个Controller
(nestjs /路由控制器),我通过以下方式传递GET请求:/collect?t=My-name
t
实际上是一个全名,我无法更改。
下面我将注入@QueryParams() data: CollectData
,我正在寻找一种方法(例如java strong和.net)来告诉控制器fullName
实际上是t
。
export interface CollectData{
@PropertyName('t')
fullName: string
}
我希望fullName
代表t
变量。
@JsonController()
export class CollectController {
@Get('/collect')
collect(@QueryParams() data: CollectData){
return data.fullName;
}
}
答案 0 :(得分:0)
您可以使用class-transformer library和ValidationPipe
given by Nest(也可以进行转换!)使用某种解决方案,并拥有CollectionData
类(使用一个类(可以在转译后对数据进行序列化,JavaScript中的接口消失了)如下:
// CollectData.ts
export class CollectData{
@Expose({ name: 'fullName' })
t: string
}
//Collect.controller.ts
@Controller() // Changed from JSONController to Controller
export class CollectController {
@Get('/collect')
collect(@Query(new ValidationPipe({ tranform: true }) data: CollectData){ //Changed from QueryParams to Query
return data.fullName;
}
}
在您的main.ts
中添加app.useGlobalPipes(new ValidationPipe({ tranform: true })
,以设置验证管道以针对所有传入请求运行