Angular 中使用 HttpClient 替代 Http 模块

阅读时长 5 分钟读完

在 Angular 中,使用 Http 模块是发送 HTTP 请求的常见做法。但是,在 Angular 4.3 后推出的 HttpClient 模块,不仅可以替代 Http 模块,更提供了更强大、更方便的功能,使发送 HTTP 请求变得更加容易。

HttpModule 的问题

在使用 Http 模块发送 HTTP 请求时,需要手动从 @angular/http 包中导入,然后将 HttpModule 作为应用的一个模块导入:

导入模块后,我们可以使用 Http 服务来发送 HTTP 请求。

-- -------------------- ---- -------
------ - ---- - ---- ----------------

-------------
  ----------- ------
--
------ ----- --------- -
  ------------------- ----- ----- --

  --------- -
    ------ ---------------------------
  -
-

Http 模块的一个问题是,它需要手动处理 HTTP 响应。这意味着在订阅后,需要手动映射数据并对错误进行处理:

-- -------------------- ---- -------
------ - ----- -------- - ---- ----------------

-- ---

--------------------------
  ---------- --------- -- ----------- -- ------
  -----------
    ---- -- ------------------
    ----- -- ------------------
  --

HttpClient 的优势

相比之下,使用 HttpClient 可以更轻松地发送 HTTP 请求,并避免手动处理响应。我们只需要导入 HttpClientModule 并将其添加到应用模块中:

有了 HttpClient,我们现在可以更简单地发送 HTTP 请求,而不必操心它的响应是否已被映射为 JSON 格式,也无需关注返回的响应对象是否包含头信息,因为 HttpClient 会自动映射响应数据为一个 JSON 对象:

-- -------------------- ---- -------
------ - ---------- - ---- -----------------------

-------------
  ----------- ------
--
------ ----- --------- -
  ------------------- ----- ----------- --

  --------- -
    ------ ---------------------------
  -
-

正如我们所看到的,HttpClient 会返回一个 Observable 导致这是一个异步的通信,这样我们就可以使用观察者模式监控并处理所有响应数据,同时可以轻松处理 HTTP 响应错误,而无需手动嵌套多个 try/catch 语句:

-- -------------------- ---- -------
------ - ---------- - ---- -----------------------

-- ---

--------------------------
  -----------
    ------ -- ------------------
    ------- -- ------------------
  --

使用 HttpClient 的示例

下面是一个简单的示例,演示如何在 Angular 项目中使用 HttpClient 发送 HTTP 请求:

-- -------------------- ---- -------
------ - ---------- ------ - ---- ----------------
------ - ---------- - ---- -----------------------

------------
  --------- -------------------
  --------- -
    -------- ---------
    ----
      --- ----------- ---- -- --------- ---------- -------
    -----
  -
--
------ ----- ----------- ---------- ------ -
  ------ ----- - ---

  ------------------- ----- ----------- --

  ---------- -
    ------------------------------------------------------------------
      ----------------- -- -
        ---------- - -----
      ---
  -
-

在这个示例中,我们首先导入 HttpClient,然后在 MyComponentngOnInit 钩子函数中发送 HTTP 请求,并将 items 数据绑定到模版中的列表元素。

总结

使用 HttpClient 替代 Http 模块,是我们可以在 Angular 项目中发送 HTTP 请求的更好方式。它提供了更简单和更可读的代码,同时也更强大和更灵活。如果你正在开发 Angular 项目,并使用 Http 模块发送 HTTP 请求,请尽早使用 HttpClient 替代它。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6472ae39968c7c53b004aefd

纠错
反馈