nestjs - 获取 JSON 响应并将其转换为传递应用程序
问题描述
在我的 NestJS 应用程序中,我正在向我无法控制的远程 API 发出 REST 请求。REST API 有一个包含 JSON 的响应,这是一个大对象,其中大部分我都不需要。假设我们有一个如下所示的 JSON 对象:
{
"foo": [
1,
2,
3
],
"bar": {
"nested": {
"some_key": "some_val"
}
}
}
如果在这种情况下,在我向这个 API 发出请求后,我只想传递上面的一个子集怎么办。类似于 a 的东西NestedDto
如下所示:
import { IsNotEmpty, IsString } from 'class-validator'
export class NestedDto {
@IsNotEmpty()
@IsString()
someKey: string
}
对我来说,获取从 REST API 返回的数据并将其转换为 NestJS 提供的上述使用工具的最佳方式是什么?我希望能够从远程 API 获取响应,并使用我的接口规范在我的 NestJS 应用程序内部传递所述数据。
解决方案
好吧,如果你只是使用没有特殊配置的 Axios,你可以通过将响应映射到你想要的来做你已经在 Express 中使用的东西。如果你想对它有点花哨,你总是可以实现某种用类转换器装饰器装饰的类,并使用一种plainToClass
与装饰器混合的方法@Transform()
。
顺便说一句,默认情况下,NestJS 提供了一个HttpModule,它是 Axios 的包装器,但它的响应是RxJS Observables。如果您决定使用 observable 路线,则可以使用 observable 运算符map
为您进行映射(尽管您仍然必须提供映射实现,就像plainToClass
我上面提到的那样),但这完全取决于您。
推荐阅读
- django - 我是 django 的初学者,
- python-3.x - Python Pandas DataFrame 将列表中的固定值添加到 cloumn 并为每个列表值生成新的列输出
- html - 加载注册表单并遍历该表单时,我在哪里可以在我的 html 中添加表单控件?
- python - 如何解决“无文件或目录问题”python?
- sql - SQL MERGE 语句不区分大小写
- node.js - AppEngine/Nodejs:应用程序实例从未运行良好
- javascript - 如何根据先前选择的选项加载 ViewBag
- blazor - 如何为 Blazor 页面实现自定义授权过滤器
- spring-security - 升级到 spring 3.1.2 后的 filterInterceptor.handlers
- java - 如何在由 JSON 数据 url 填充的微调器布局中使用 If Else?