如何使用 nestjs httpservice (axios) 获取嵌套的 api 数据
how to get nested api data using nestjs httpservice (axios)
我正在使用 nestjs HttpService.get 从以下 API:
检索数据
getVehicleMake(): Observable<AxiosResponse<any>> {
return this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
.pipe(
map(response => response.data.Results),
map(obj => obj.Make_Name),
);
}
API returns 嵌套的对象数组等数据。我试图访问 Make_Name 属性 的数组但没有成功。我尝试了各种可观察运算符 none 似乎有效。我知道我可以切换到 Promise...但我想使用 observables...任何想法将不胜感激。
如果 Results
是一个数组,创建 Make_Name
属性 的数组需要做的是在 Results
属性。鉴于上述情况,您有两种方法可以做到这一点。
选项 1:在一个 map
函数中执行所有操作
getVehicleMake(): Observable<AxiosResponse<any>> {
return this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
.pipe(
map(response => response.data.Results.map(result => result.Make_Name)
);
}
选项 2:使用两个 map
函数分别获取数据并正确映射它
getVehicleMake(): Observable<AxiosResponse<any>> {
return this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
.pipe(
map(response => response.data.Results),
map((results) => results.map(result => result.Make_Name)
);
}
我正在使用 nestjs HttpService.get 从以下 API:
检索数据 getVehicleMake(): Observable<AxiosResponse<any>> {
return this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
.pipe(
map(response => response.data.Results),
map(obj => obj.Make_Name),
);
}
API returns 嵌套的对象数组等数据。我试图访问 Make_Name 属性 的数组但没有成功。我尝试了各种可观察运算符 none 似乎有效。我知道我可以切换到 Promise...但我想使用 observables...任何想法将不胜感激。
如果 Results
是一个数组,创建 Make_Name
属性 的数组需要做的是在 Results
属性。鉴于上述情况,您有两种方法可以做到这一点。
选项 1:在一个 map
函数中执行所有操作
getVehicleMake(): Observable<AxiosResponse<any>> {
return this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
.pipe(
map(response => response.data.Results.map(result => result.Make_Name)
);
}
选项 2:使用两个 map
函数分别获取数据并正确映射它
getVehicleMake(): Observable<AxiosResponse<any>> {
return this.httpService.get('https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json')
.pipe(
map(response => response.data.Results),
map((results) => results.map(result => result.Make_Name)
);
}