在我的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应用内部。
答案 0 :(得分:1)
好的,如果您仅使用Axios,而没有特殊配置,则只需将响应映射到所需内容,就可以完成Express中已经使用的兴奋剂。如果您想花点时间看,可以随时实现用class-transformer装饰器修饰的类,并使用与@Transform()
装饰器混合的plainToClass
方法。
顺便说一句,默认情况下,NestJS提供了HttpModule作为Axios的包装,但其响应为RxJS Observables。如果您决定采用可观察的路线,则可以使用可观察的运算符map
为您进行映射(不过,您仍然必须提供映射实现,就像我上面提到的plainToClass
一样) ,但这完全取决于您。