在返回 HttpResponse 时映射 HttpClient 响应数据

Map HttpClient response data while returning an HttpResponse

在我的服务中,我总是像这样使用 rxjs 将 JSON 转换为实际的 class 类型。

get(id: UUID): Observable<OrderDTO> {
    return this.http.get<OrderDTO>(`${this.baseUrl}/${id}`)
        .pipe(
            map(x => OrderDTO.fromJson(x))
        );
}

我现在有一个案例,我想这样做,但也得到了 HTTP headers。所以我将 {observe: 'response'} 添加到 get 调用,然后 return 一个 Observable<HttpResponse<OrderDTO>>...除了我不知道如何仍然做适当的 map 那里。有人可以帮我解决这个语法问题吗?

我认为您将从 http 调用中获得一个 returned HttpResponse 对象,您可以映射您想要的 HttpResponse 属性和响应主体以及 return 数组,例如

this.http.get<OrderDTO>(`${this.baseUrl}/${id}`)
        .pipe(
            map(resp => 
                [resp.headers,resp.body])
        ).subscribe(([header,body])=>....);