完整的 ng2-interceptors 的 npm 包使用教程

阅读时长 12 分钟读完

如果你正在使用 Angular2 或者 Angular4, 并且想要拦截 HTTP 请求, 并增加, 修改或删除请求头, 请求数据或者响应数据, 那么 ng2-interceptors 这个 npm 包或许是你的绝佳选择。

本文将会详细的介绍如何使用 ng2-interceptors npm 包,通过以下几步:

  1. 安装 ng2-interceptors npm 包
  2. 编写一个 http interceptor provider
  3. 编写一个 app module provider(如果你是 Angular4 以上,这一步也可省略)
  4. 把 http interceptor provider 注册到 app module 中
  5. 配置 http options

1. 安装 ng2-interceptors npm 包

使用如下命令安装本模块:

2. 编写一个 http interceptor provider

接下来我们需要实现一个我们自己的 HTTP interceptor provider 来增加,修改或者删除请求头。

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

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

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

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

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

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

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

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

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

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

3. 编写一个 app module provider

如果你使用的是 Angular2, 那么在这一步我们需要在 app module 中用 provide 向全局注入我们刚刚编写的 HTTP interceptor provider

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

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

4. 把 http interceptor provider 注册到 app module 中

在这一步,我们需要把实现的 HTTP Interceptor 注册到 app module 中:

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

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

5. 配置 http options

使用 http.get() / http.post() / http.delete() 等方法时,我们也可以传入一些参数来修改http request:

这里的 options 是可选的,通过该选项你可以覆盖原有请求的默认值 ,同样也可以增加请求头等数据。

示例代码

完整的 app.module.tsinterceptor.service.ts 代码如下:

app.module.ts

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

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

interceptor.service.ts

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

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

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

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

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

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

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

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

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

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

使用上述步骤,我们已经可以使用 ng2-interceptors 拦截请求了。

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

纠错
反馈