【问题标题】:cordova-plugin-advanced-http vs @angular/common/httpcordova-plugin-advanced-http 与 @angular/common/http
【发布时间】:2019-01-02 17:51:56
【问题描述】:

我想创建一个 API 帮助程序类来服务于应用程序中所有类型的 rest api 调用。我一直在使用 angular httpClient 类

import {HttpClient} from '@angular/common/http'

做API交互但最近碰到https://ionicframework.com/docs/native/http/

任何人都可以描述两者之间的区别,以便我可以根据我的要求决定哪个更好。

【问题讨论】:

  • HttpClient 将在不使用本机 http 调用的情况下从 webview 发送 http 请求。如果您的 api 服务器未配置为服务跨源请求,则可能会产生 CORS 问题。

标签: angular ionic3 cordova-plugins angular-httpclient


【解决方案1】:

首先,Angulars Http 模块基于 Observables,在 Angular 中广泛使用,因此 Ionic他们自己。 Ionic Http 模块是基于 Promises 的,如果你想使用它们,它本身是完全可以的。

由于这是一个 Ionic Native 模块,这也意味着应用程序不会使用底层 Java (Android) 或 Objective-C (iOS) 函数而不是 Javascript 来发出这些请求功能(如果我在这里错了,请任何人纠正我)

然而,主要优点列在 Ionic Http 模块的Github Repo 上:

  • 后台线程 - 所有请求都在后台线程中完成。
  • HTTP 代码 401 的处理 - 在 Issue CB-2415 阅读更多内容。
  • SSL 固定 - 在LumberBlog 阅读更多信息。

第一点似乎是最吸引人的,因为它不仅是解决问题,而且是增加功能的特性。 我无法确切说明在后台线程中运行这些程序有多大的优势,但我也怀疑这会产生很大的影响,除非您的应用程序非常耗费网络。

所以 Ionics 原生模块正好解决了这些问题,这些问题显然是使用纯 Javascript 函数从容器移动应用程序发出 http 请求时出现的。

我想说Ionic Native 解决方案应该在您遇到上述任何问题的情况下使用。 如果没有,您只需添加一个新依赖项,该依赖项使用另一种范式(承诺),而不是您可以找到的任何关于 Angular 的教程。如果不需要,您只需不使用它即可降低复杂性和包大小。

Angular 与 Http 模块捆绑在一起,并且维护得很好,您还可以在网上找到有关此包的更多帮助。

【讨论】:

  • 解释得很清楚。根据您的解释,我觉得我应该使用 angular httpClient。但我被离子原生 http 吸引的原因是,“setHeader(host, header, value)”>> 为所有未来的请求设置一个标头。接受主机名、标头和值。 angular httpClient 中是否有类似的功能?
  • 遗憾的是,我相信这不是由 Angular 模块本身提供的。然而,实现同样的事情真的很容易。一种方法是继续编写您自己的请求服务,该服务包装有角度的 http 方法并在那里设置标头。实现相同目的的另一种方法是编写一个拦截器,它会修改每个请求:theinfogrid.com/tech/developers/angular/…
  • 我会调查拦截器。感谢您抽出宝贵时间。我会接受你的回答:)
猜你喜欢
  • 2021-06-14
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2023-03-11
  • 2019-03-12
  • 1970-01-01
  • 2017-12-25
相关资源
最近更新 更多