GraphQL 错误处理:如何处理 https 错误

阅读时长 13 分钟读完

引言

GraphQL 最大的特点就是优雅、快速、灵活的数据查询方法,不管是在前端还是后端都有着广泛的应用场景。大多数传输协议都有自己的错误处理机制,但是在 HTTPS 协议的情况下,我们很难快速准确地判断错误的原因。在本文中,我们将会介绍 GraphQL 在 HTTPS 协议的情况下的错误处理方法,以及如何处理这些错误。

HTTPS 错误类型

在使用 GraphQL 进行数据查询的时候,如果遇到错误,那么这个错误类型可能有以下几种:

  • UnauthenticatedError 表示当前用户没有权限访问此资源。
  • ValidationError 表示请求数据验证出错,比如传入的参数不符合要求。
  • ParsingError 表示 GraphQL 解析查询语句失败,可能是语法错误或数据库出现问题等。
  • ServerError 表示服务器内部错误,可能是数据库出现了问题等。
  • NetworkError 表示网络出现了错误,比如 HTTPS 协议错误,网络不稳定等。

HTTPS 错误处理方法

如果在 HTTPS 协议的情况下遇到了错误,前端可以根据错误类型进行不同的错误处理方法。

UnauthenticatedError

当遇到 UnauthenticatedError 时,可以采用以下两种错误处理方法:

  1. 即时跳转到登录页面
  2. 显示”无访问权限“提示

下面是第一种实现方法的示例代码:

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

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

下面是第二种实现方法的示例代码:

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

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

ValidationError

当遇到 ValidationError 时,可以采用以下两种错误处理方法:

  1. 验证错误提示
  2. 更改输入框提示颜色或者边框颜色

下面是第一种实现方法的示例代码:

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

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

下面是第二种实现方法的示例代码:

ParsingError

当遇到 ParsingError 时,可以采用以下两种错误处理方法:

  1. 显示错误提示
  2. 在控制台中输出错误信息

下面是第一种实现方法的示例代码:

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

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

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

下面是第二种实现方法的示例代码:

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

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

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

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

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

ServerError

当遇到 ServerError 时,可以采用以下两种错误处理方法:

  1. 显示错误提示
  2. 控制台输出错误信息

下面是第一种实现方法的示例代码:

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

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

下面是第二种实现方法的示例代码:

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

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

NetworkError

当遇到 NetworkError 时, 需要先排除一些与接口无关的问题,比如网络连接异常等。如果确定是接口本身出现了问题,那么可以采用以下两种错误处理方法:

  1. 显示错误提示
  2. 控制台输出错误信息

下面是第一种实现方法的示例代码:

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

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

下面是第二种实现方法的示例代码:

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

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

结论

在使用 GraphQL 进行数据查询时,最常见的错误类型有 UnauthenticatedErrorValidationErrorParsingErrorServerErrorNetworkError。在 HTTPS 协议的情况下处理这些错 误,可以采用不同的错误处理方法来进行处理。实际上, 针对不同的错误类型可以采用多种方法来处理,根据具体情况进行选择即可。总之, 前端程序员需要对应用场景和需求合理选择错误处理方法,来保持应用的稳定性和可靠性。

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

纠错
反馈