Angular 5 HttpClient 与以前的 Http 相比有啥优势?

Posted

技术标签:

【中文标题】Angular 5 HttpClient 与以前的 Http 相比有啥优势?【英文标题】:What are advantages of Angular 5 HttpClient over previous Http?Angular 5 HttpClient 与以前的 Http 相比有什么优势? 【发布时间】:2018-06-02 10:07:49 【问题描述】:

我阅读了官方升级指南,上面写着“因为 HttpClient 得到广泛采用,我们决定......”但是这个 HttpClient 带来的真正好处是什么?

我正在考虑尝试一下,但中途感到困惑,因为我不知道升级后这些需要发生什么:

从 '@angular/http' 导入 Http, Headers, RequestOptions, ResponseContentType ;

我试图在新客户端中找到“匹配项: 从 '@angular/common/http' 导入 HttpClient, HttpParams, HttpHeaders

但不知道应该如何正确“升级”这些,因为指南没有提及。

那么第二个问题 - 我们如何处理其他 http 的东西?

【问题讨论】:

也许这个答案仍然适用:***.com/questions/45129790/… Difference between HTTP and HTTPClient in angular 4?的可能重复 【参考方案1】:

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 拦截器用于中间件组件。

中间件模式的一些好处:

    HTTP 请求的全局错误处理 全局重试机制(即重试 3 次) 用于长时间运行的全局 HTTP 微调器。

例如,客户端代码(使用 HttpClient)无需担心错误处理、重试或可视等待组件——所有这些都在一个地方处理。

【讨论】:

那么我是否有机会阅读有关第二个问题的一些内容 - 应该从旧方式迁移哪些内容:Headers、ResponseType? 您仍然可以通过this.http.get('...', observe: 'response' );访问完整的 HTTP 响应对象(包括标头) 非常感谢!我现在成功地将我的代码迁移到 HttpClient ;)并且还使用了您的建议回复。事实上,它现在对我来说是更清晰的代码!;)

以上是关于Angular 5 HttpClient 与以前的 Http 相比有啥优势?的主要内容,如果未能解决你的问题,请参考以下文章

HttpClient Angular 5 不发送请求

Angular 5 HTTPClient 基本授权不起作用

Angular 5,httpclient,跨域请求被阻止

显示 Json 数组 Angular 5 HttpClient

如何在 Typescript 类中创建 Angular 5 HttpClient 实例

Angular 5 GET data with Observable and HttpClient - 从 Web API 获取数据