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 相比有啥优势?的主要内容,如果未能解决你的问题,请参考以下文章
显示 Json 数组 Angular 5 HttpClient
如何在 Typescript 类中创建 Angular 5 HttpClient 实例
Angular 5 GET data with Observable and HttpClient - 从 Web API 获取数据