【问题标题】:Express custom GET/POST parameter binding nestjs / routing-controllersExpress 自定义 GET/POST 参数绑定 nestjs / routing-controllers
【发布时间】:2019-11-25 20:25:03
【问题描述】:

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

}

【问题讨论】:

    标签: express nestjs


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-04
      • 2014-01-18
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 2019-11-17
      相关资源
      最近更新 更多