npm 包 @envage/hapi-pg-rest-api 使用教程

阅读时长 7 分钟读完

在 Web 开发中,前端前端工程师不可避免地需要与后端接口进行数据交互。为了方便地开发和管理后端接口,我们通常会使用一个称为“RESTful API”的规范。而在 Node.js 中,我们可以通过 hapi 框架来搭建 RESTful API 服务。本文将介绍 @envage/hapi-pg-rest-api 这个 npm 包,它可以帮助我们更方便地搭建基于 PostgreSQL 的 RESTful API 服务。

功能简介

@envage/hapi-pg-rest-api 基于 hapi 框架,并提供了以下优秀的特性:

  • 支持 RESTful API 的所有 HTTP 方法(包括 GET、POST、PUT、PATCH 和 DELETE);
  • 自动化的 CRUD 操作支持,包括建表、数据写入、数据查询、数据修改、数据删除等;
  • 内置了 pg-promisejoi 这两个流行的 npm 包,以便于在项目中更快捷和安全地使用 PostgreSQL 数据库;
  • 可自定义数据模型和模式,支持自定义其他 hapi 插件。

安装和设置

首先,我们需要确保环境中已经安装了 PostgreSQL 数据库和 Node.js 运行时环境。然后我们通过 npm 来安装 @envage/hapi-pg-rest-api

@envage/hapi-pg-rest-api 已经把所需的 pg-promisejoi 包打入了自己的模块,所以我们不需要再额外安装这两个 npm 包。

在代码中引入 @envage/hapi-pg-rest-api 之后,我们就可以开始使用它了。首先,我们需要建立一个 PostgreSQL 数据库,然后创建一个 pg-promise 实例并连接到数据库:

我们可以使用 PostgreSQL 提供的 psql 命令行工具来创建数据库和用户,在 pg-promise 的连接 URL 中填入数据库的连接信息。

接着,我们来使用 @envage/hapi-pg-rest-api 来创建一个 RESTful API 服务。我们需要做的第一件事情是创建一个 Plugin 实例:

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

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

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

在上面的代码中,我们使用 async/await 异步编程,异步地注册 @envage/hapi-pg-rest-api 插件,然后启动 RESTful API 服务。参数 options 是一个选项对象,其中与 pg-promise 相关的参数被传递给了 @envage/hapi-pg-rest-api,例如:

  • database:数据库名;
  • username:数据库用户名;
  • password:数据库密码。

在你的浏览器中打开 http://localhost:3000/docs 可以看到路由文档。

使用样例

下面以一个用户(User)信息的案例为例,演示 @envage/hapi-pg-rest-api 的用法。

首先,我们创建 users 表:

然后,我们可以定义 User 模型:

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

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

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

在模型中,我们定义了 User 的字段(username, email, password),以及各字段的合法性验证。同时,我们指定了 tableName: 'users',以便与 users 表对应。

接下来,我们就可以定义 User 的 RESTful API 接口了:

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

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

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

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

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

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

在上述代码中,我们使用 server.route() 方法创建 User 的 RESTful API 路由,其中 { pgrest: { table: User.tableName } }@envage/hapi-pg-rest-api 中 handler 的配置项,可以实现自动化的 CRUD 操作。

我们可以使用 Postman 等工具向 /users 接口发送 POST 请求:

用 GET 方法,就可以查询 /users 接口的所有数据:

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

我们可以看到,通过使用 @envage/hapi-pg-rest-api,我们很容易地通过 RESTful API 接口来完成对 users 表数据的操作。

总结

@envage/hapi-pg-rest-api 的特性齐全,具有高度的可扩展性和灵活性。通过它,我们可以更加方便地开发、管理 RESTful API 服务,并提升了项目的开发效率。希望本文对各位前端工程师有所帮助。

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