快速自定义GET / POST参数绑定nestjs / routing-controllers

时间:2019-07-17 04:16:50

标签: express nestjs

我有一个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;
    }

}

1 个答案:

答案 0 :(得分:0)

您可以使用class-transformer libraryValidationPipe 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 }),以设置验证管道以针对所有传入请求运行