教你使用 Hapi 来创建 RESTful API

阅读时长 8 分钟读完

前言

随着前端技术的发展,越来越多的公司开始将前端开发与后端开发分离,前端开发渐渐成为一个独立的职位。其中一个重要的方向就是前端开发人员需要熟练掌握 RESTful API 的创建和调用。而使用 Hapi 来创建 RESTful API,可以提高效率和可维护性,本文将详细介绍使用 Hapi 实现 RESTful API 的过程和细节。

Hapi 的介绍

Hapi 是一个开源的 Node.js Web 框架,它提供了一些辅助函数和工具,方便开发者构建高性能、可扩展、可维护的 Web 应用程序和服务。Hapi 具有如下特点:

  • 路由配置简单,可扩展性高;
  • 插件化架构,便于整合各种插件,比如 Cookie、Auth、Swagger 以及 hapi-auth-jwt2 等等;
  • 内置了多种安全防护功能,比如 CSRF、XSS、CORS 等等;
  • 提供了一套完整的测试框架,可以轻松地对接口进行测试。

该框架是由 Walmart Labs 开发的,使用者较为广泛,可用来构建各种类型的 Web 应用程序和服务。下面我们开始使用 Hapi 创建一个 RESTful API。

创建 RESTful API

接下来,我们将使用 Hapi 搭建一个简单的 RESTful API,并且包含常用的 CRUD 操作。我们的需求是:能够通过 API 实现读取、创建、更新和删除某个物品的功能。

安装 Hapi

使用 npm 安装 Hapi:

编写路由

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

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

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

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

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

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

在上面的代码中,我们创建了一个基本的服务,并定义了 5 个路由:

  • /items GET 方法,用来获取所有物品;
  • /items/{id} GET 方法,用来获取指定 ID 的物品;
  • /items POST 方法,用来创建物品;
  • /items/{id} PUT 方法,用来更新指定 ID 的物品;
  • /items/{id} DELETE 方法,用来删除指定 ID 的物品。

实现路由

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

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

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

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

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

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

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

在上面的代码中,我们实现了 /items,用于储存所有的物品,并且将物品信息作为 JSON 对象进行存储。每个物品都包⽂以下字段:

  • id:物品的 ID。
  • name:物品的名称。

/items 路由被请求时,我们返回全部物品的信息。

/items/{id} 路由被请求时,我们根据传递的参数获取某个物品的信息。

/items 使用 POST 方法请求时,我们在 items 数组中新增一个元素,该元素的 ID 为已有元素中最大的 ID 加 1。

/items/{id} 使用 PUT 方法请求时,我们更新指定 ID 的物品名。

/items/{id} 使用 DELETE 方法请求时,我们删除指定 ID 的物品。

总结

本文介绍了使用 Hapi 来创建 RESTful API 的过程和细节,包括安装 Hapi、编写路由和实现路由。作为一款 Node.js 的 Web 框架,Hapi 具有很好的接口设计、路由配置简单、可扩展性高、内置多种安全防护功能等优点,可以满足开发者的需求。未来,我们会持续关注该框架的技术发展,并且继续分享更多的前端技术文章。

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

纠错
反馈