gpt4 book ai didi

typescript - 如何处理 axios httpservice observable 响应?

转载 作者:行者123 更新时间:2023-12-04 00:20:43 35 4
gpt4 key购买 nike

我想我快疯了,因为我对 node 和 typescript 还很陌生……我只是想以同步的方式检索 http get 请求的结果。

鉴于:

import { Injectable, HttpService } from '@nestjs/common';
import {} from '@nestjs/core';

@Injectable()
export class AppService {
private readonly DATA_URL:string = "https://remote/data.json";
constructor(private httpService:HttpService){}
getSomething(): Array<Object> {
let resp = this.httpService.get(this.DATA_URL); //what do I do now?? It's an observable
}
}

编辑 :
我在这里写了完整的代码,因为它可能对其他人学习框架有用。我用了Jay的回答,但是richbai对我理解背后的理论也有很大帮助。当然,如果它仍然可以变得更好,请改进/纠正。
  • 我添加了一个类型来更好地控制而不是 Object
  • 我需要将日期字段从“yyyy-mm-ddThh24:mi:ss”响应更改为“yyyy-mm-dd”
  • 我还需要根据值过滤响应
     getSomething(aFilterValue:number): Observable<RespDTO[]> {
    return this.httpService.get(this.DATA_URL).pipe(
    map((axiosResponse : AxiosResponse) => (axiosResponse.data as
    RespDTO[])
    .filter((el:RespDTO) => el.aCode===aFilterValue)
    .map((el:RespDTO) => ({...el,aDateField:el.aDateField.split('T')[0]}))),
    );
    }
  • 最佳答案

    如果您需要从 Nest 服务执行此操作,并将结果返回给客户端,您只需返回 observable,Nest 将从那里为您处理订阅。如果您需要进行任何额外的数据处理,您可以使用 map .pipe() 之后的运算符Observable 的运算符.这方面的一个例子可能是获取 只有来自 axios 响应的数据,而不是整个响应(使用 JSON.stringify() 会有问题,因为它本身有循环引用)。
    下面是这样的一个例子

    import { Injectable, HttpService } from '@nesjts/common';
    import { AxiosResponse } from 'axios';
    import { Observable } from 'rxjs';
    import { map } from 'rxjs/operators';

    @Injectable()
    export class HttpConsumingService {
    private readonly DATA_URL = 'http://remote/data.json';
    constructor(private readonly http: HttpService) {}

    callHttp(): Observable<Array<Object>> {
    return this.http.get(this.DATA_URL).pipe(
    map((axiosResponse: AxiosResponse) => {
    return axiosResponse.data;
    })
    );
    }
    }
    从这里开始,如果您有一个调用 this.httpConsumingService.callHttp() 的 Controller ,Nest 将调用该服务,订阅 observable,并在后台从它返回数据。不需要额外的工作。如果您正在寻找有关 Observables 和可用操作的更多信息 learnrxjs.io是一个很好的来源。

    关于typescript - 如何处理 axios httpservice observable 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60908571/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com