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

面试官:小伙子,你的代码为什么这么丝滑?

在 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


猜你喜欢

  • npm 包 xpath-parser 使用教程

    在前端开发中,有时候需要通过解析 XML 或 HTML 文档获取节点信息,这时就需要用到 xpath(XML Path Language)语言。为了在 JavaScript 中方便解析 xpath 表...

    5 年前
  • npm 包 cerebro-stackoverflow 使用教程

    前端开发中,我们经常会遇到各种问题,而 Stack Overflow 是一个非常好的问答社区。如果我们能在编写代码的同时快速地搜索 Stack Overflow 上的相关问题和答案,将大大提高我们的开...

    5 年前
  • 使用 botbuilder-linebot-connector 构建 Line Bot

    在构建聊天机器人时,Node.js 社区中有许多优秀的工具和库。其中,botbuilder-linebot-connector 为开发者提供了使用 Microsoft Bot Framework 构建...

    5 年前
  • npm 包 personal-email-domains 使用教程

    什么是 personal-email-domains personal-email-domains 是一个 npm 包,它提供了一个包含个人邮箱域名的数组。使用该数组,您可以方便地验证您的用户是否在使...

    5 年前
  • npm 包 disposable-email-domains 使用教程

    在前端开发中,我们经常需要进行数据验证和用户输入确认,其中邮箱验证是其中一个重要的项目。但是,我们在实际开发过程中会遇到很多使用一次性邮箱注册的用户,这给我们的系统管理带来了一定的困扰。

    5 年前
  • npm 包 @lattebank/analytics.js-facade 使用教程

    简介 @lattebank/analytics.js-facade 是一个为了方便前端开发人员快速接入第三方统计工具所封装的 npm 包。此包可以帮助开发人员快速完成统计工具的接入和使用,减少了接入过...

    5 年前
  • npm 包 analytics.js-integration-google-analytics 使用教程

    介绍 在前端开发中,我们常常需要使用 Google Analytics 来收集用户行为数据以及分析用户行为。而为了方便开发者在项目中使用 Google Analytics,我们可以使用 npm 包 a...

    5 年前
  • npm 包 segmentio-facade 使用教程

    1. 简介 SegmentIO 是一个客户端行为跟踪和分析工具,可以帮助用户收集和分析网站或移动应用上的用户行为数据。segmentio-facade 是 SegmentIO 提供的 Node.js ...

    5 年前
  • npm 包 lag.find 使用教程

    简介 lag.find 是一个 npm 包,它提供了一种高效的查找方式,可用于数组、对象或类数组的搜索。相对于传统的循环查找,它能够更加快速地找到所需元素。 此包已经发布于 npm 上,可以通过以下方...

    5 年前
  • npm 包 lag.every 使用教程

    在前端开发过程中,我们经常需要处理时间或者日期,比如获取当前时间或者计算两个时间之间的差值,使用 lag.every 可以让这个过程更加简单。 什么是 lag.every lag.every 是一个用...

    5 年前
  • npm 包 lag.compose 使用教程

    前言 在前端开发中,我们经常需要使用到函数式编程的技术及其相关工具。 npm 包 lag.compose 就是一个功能强大的函数式编程工具,它可以帮助我们更加简单高效地编写代码,并提高代码的可复用性和...

    5 年前
  • npm 包 lag.boolean 使用教程

    lag.boolean 是一个 JavaScript 库,用于生成可配置的布尔值。该库可以用于模拟布尔值的不确定性,从而更好地模拟现实世界中的情况。在前端开发中,lag.boolean 库可以用于测试...

    5 年前
  • npm 包 lag.sortby 使用教程

    在前端开发过程中,经常需要对数据进行排序。虽然 JavaScript 提供了 sort 方法,但有时我们需要更复杂的排序规则。这时,npm 包 lag.sortby 可以派上用场。

    5 年前
  • npm 包 lag.each 使用教程

    介绍 在前端开发中,经常需要针对数组进行遍历操作,并对每个数组元素进行特定的处理。虽然 JavaScript 原生提供了一些数组遍历的方法(如 forEach、map、filter 等),但是有时候需...

    5 年前
  • npm 包 lag.defaults 使用教程

    在前端开发中,我们经常需要处理对象的默认值,这时候可以使用 npm 包 lag.defaults。本文将介绍这个 npm 包的使用方法和示例。 什么是 lag.defaults lag.default...

    5 年前
  • npm 包 lag.contains 使用教程

    简介 在前端开发中,我们经常需要判断一个数组中是否包含某个元素,一般会使用 Array 的 indexOf 方法来进行判断。但是当数组数据量较大时,使用 indexOf 方法会导致性能上的问题。

    5 年前
  • npm 包 lag.at 使用教程

    介绍 npm 包 lag.at 是一个能够帮助前端程序员快速了解 Web 应用的渲染速度的工具。使用 lag.at 可以轻松地检测浏览器中每一个元素的加载速度以及整个页面的渲染速度。

    5 年前
  • npm 包 lag.append 使用教程

    前言 在前端开发中,经常会遇到需要动态添加 DOM 元素的情况。这时,我们就需要使用 JavaScript 来操作 DOM。然而,当 DOM 元素中包含大量数据时,频繁地操作 DOM 元素不仅效率低下...

    5 年前
  • npm 包 lag.add 使用教程

    前言 在前端开发中,我们经常需要对数组或对象进行各种操作,比如对数组进行合并、去重、过滤等操作,或者对对象进行深拷贝和合并等操作。这时,我们就需要使用一些工具库来帮助我们完成这些操作。

    5 年前
  • npm 包 lag.all 使用教程

    lag.all 是一个基于 JavaScript 的轻量级工具库,它提供了一系列常用的函数和方法,旨在帮助开发者更高效地进行前端开发。本文将介绍 lag.all 的使用教程,包括安装、常用功能及使用示...

    5 年前

相关推荐

    暂无文章