gpt4 book ai didi

angular - 在 angular2 中何处以及如何使用 HttpResponse

转载 作者:行者123 更新时间:2023-12-01 09:46:30 24 4
gpt4 key购买 nike

HttpResponse class(in @angular/common/http ) 是 class Response 的替代品的 @angular/http (已弃用)。查看文档并没有太多了解如何以及在何处使用它!此外,我试图替换旧的 angular 代码,但由于这个类是通用的,所以它需要一个类型,例如HttpResponse<T> .给它类型给出一个错误:
Property 'json' does not exist on type 'HttpResponse<any>'
任何人都可以帮助我知道如何在 Angular 中使用 HttpResponse 类吗?

更新

这是我的代码片段,一个函数“get”,我做了:

get(path: string, params: HttpParams = new HttpParams()): Observable<any> {
return this.http.get(`${environment.api_url}${path}`, { headers: this.setHeaders(), search: params })
.catch(this.formatErrors)
.map((res: HttpResponse<any>) => res.json());

最佳答案

HttpResponse根据文档是:

A full HTTP response, including a typed response body (which may be null >if one was not returned).

HttpResponse is a HttpEvent available on the response event stream.


根据您面临的具体问题 - T指泛型类型,用于 body HttpResponse 的属性(property).
class HttpResponse<T> extends HttpResponseBase {
constructor(init: {...})
get body: T|null
...
所以如果你的变量是 res: HttpResponse<any>并且您正在尝试访问 json属性如 res.json将无法工作,因为 HttpResponse没有房产 json .您需要访问 body然后 json .
(res:HttpResponse<any>) => console.log(res.body.json)
另外,一个很好的例子,你使用 HttpResponseHttpInterceptor .拦截器拦截并更新响应和/或请求事件流。并与 HttpResponseHttpRequest您可以使用 event instanceof 检测要处理的流事件.
这是拦截器的示例:
@Injectable()
export class EmptyResponseInterceptor implements HttpInterceptor {

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const newReq = req.clone({
responseType: 'text'
});

return next.handle(newReq).map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
let newEvent: HttpEvent<any>;

// alter response here. maybe do the following
newEvent = event.clone({
// alter event params here
});

return newEvent;
}
});
}
}

关于angular - 在 angular2 中何处以及如何使用 HttpResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47409225/

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