Angular 5 HttpClient相对于之前的Http有哪些优势?

4
我阅读了官方升级指南,其中提到“因为HttpClient得到广泛应用,我们决定......”。但是这个HttpClient带来了什么实际的好处呢?
我曾经考虑过尝试使用它,但是当我进行到一半时感到困惑,因为我不知道在升级后需要对这些代码进行哪些更改:
import { Http, Headers, RequestOptions, ResponseContentType } from '@angular/http';
我试图在新的客户端中查找匹配项:import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http'。但是我不知道这些应该如何被正确地“升级”,因为指南没有提到这一点。
所以第二个问题是,我们要如何处理其他http的事情?

1
或许这个答案仍然适用:https://dev59.com/elcO5IYBdhLWcg3w3VLU - Daniel H.J.
可能是Angular 4中HTTP和HTTPClient的区别?的重复问题。 - trungk18
1个回答

7

HttpClient接口与旧的Http接口基本没有变化。最大的区别在于HttpClientModule对中间件(即HTTP拦截器)有更好的支持。

一些功能优势:

•   Strongly typed response body access
•   JSON assumed by default (no more need to do .map(t=>t.json())
•   Better support for interceptors as middleware
•   Immutable request/response objects
•   Progress events for request upload/response download

使用新的HTTP客户端,使用HTTP拦截器作为中间件组件非常简单。
一些中间件模式的好处:
1. 全局错误处理HTTP请求 2. 全局重试机制(例如重试3次) 3. 全局HTTP旋转器用于长时间运行的操作。
例如,客户端代码(使用HttpClient)不需要担心错误处理、重试或可视化等待组件 – 所有这些都在一个地方处理。

那么我能在哪里阅读有关第二个问题的信息吗——应该从旧方式迁移什么:Headers、ResponseType? - Sergey Rudenko
1
通过 this.http.get('...', { observe: 'response' });,您仍然可以访问完整的HTTP响应对象(包括标头)。 - pixelbits
非常感谢!我已经成功将我的代码迁移到HttpClient了;),并且使用了您的响应建议。现在对我来说,代码确实更加清晰了!;) - Sergey Rudenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接