我有一个Controller (nestjs / routing-controllers),并且我通过以下方式传递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;
}
}发布于 2019-07-18 00:01:28
您可以使用某种使用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 }),以设置针对所有传入请求运行的验证管道
https://stackoverflow.com/questions/57068450
复制相似问题