进行JSON响应并将其转换以传递应用程序

时间:2019-11-20 20:01:04

标签: nestjs

在我的NestJS应用中,我正在向无法控制的远程API发出REST请求。 REST API的响应包含一个大对象JSON,我不需要其中的大多数。假设我们有一个如下所示的JSON对象:

{
"foo": [
    1,
    2,
    3
],
"bar": {
    "nested": {
        "some_key": "some_val"
    }
}

}

在这种情况下,如果我向此API提出请求后,只想传递上述内容的一部分,该怎么办?类似于NestedDto的外观,如下所示:

import { IsNotEmpty, IsString } from 'class-validator'

export class NestedDto {
  @IsNotEmpty()
  @IsString()
  someKey: string
}

对于我来说,从REST API返回的数据中提取数据并将其转换为NestJS提供的上述工具的最佳方法是什么?我希望能够从远程API接收响应,并使用我的界面规范将上述数据传递到我的NestJS应用内部。

1 个答案:

答案 0 :(得分:1)

好的,如果您仅使用Axios,而没有特殊配置,则只需将响应映射到所需内容,就可以完成Express中已经使用的兴奋剂。如果您想花点时间看,可以随时实现用class-transformer装饰器修饰的类,并使用与@Transform()装饰器混合的plainToClass方法。

顺便说一句,默认情况下,NestJS提供了HttpModule作为Axios的包装,但其响应为RxJS Observables。如果您决定采用可观察的路线,则可以使用可观察的运算符map为您进行映射(不过,您仍然必须提供映射实现,就像我上面提到的plainToClass一样) ,但这完全取决于您。