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 包 code-templates 使用教程

    在前端开发中,我们常常需要使用到重复性高的代码块。为了提高工作效率,我们可以使用 NPM 包 code-templates 来创建自定义代码模板。本文将详细介绍 code-templates 的使用方...

    5 年前
  • npm 包 clay-sequelize 使用教程

    前言 在 Node.js 应用的开发过程中,很多时候需要使用到数据库。使用 Node.js 操作数据库的方式很多,如使用原生的 Node.js 模块来操作数据库、使用 ORM (Object Rela...

    5 年前
  • npm 包 baucis 使用教程

    什么是 baucis Baucis 是一个基于 Express 的自动 RESTful API 生成器,它的作用是帮助开发者自动化地生成处理 RESTful API 的代码和逻辑。

    5 年前
  • npm 包 atomify-cli 使用教程

    前言 Atomify-cli 是一个 Node.js 模块,用于将前端资源文件打包并压缩成一个单独的 JS 文件,以优化前端页面的性能。本文将详细介绍如何使用 atomify-cli,包括安装和使用方...

    5 年前
  • npm 包 metalsmith-better-excerpts 使用教程

    在前端开发中,经常需要用到 markdown 来编写文档、博客等内容。而 metalsmith-better-excerpts 是一个能够为 markdown 文章自动生成摘要的 npm 包,使用起来...

    5 年前
  • npm 包 contentful-metalsmith 使用教程

    介绍 contentful-metalsmith 是一个基于 Metalsmith 构建的 CMS 工具,可以通过连接 Contentful API 来快速构建静态网站。

    5 年前
  • npm 包 metalsmith-filter 使用教程

    Metalsmith 是一个静态网站生成器,它允许开发者使用简单的插件机制自定义网站构建流程。在构建网站时,我们通常需要对源文件进行筛选,例如只选择某些特定类型的文件来进行下一步处理。

    5 年前
  • Npm 包 metalsmith-excerpts 使用教程

    Metalsmith 是一个简单、易用、灵活的静态网站生成器,它使得构建、生成和发布网站变得非常容易。Metalsmith 的灵活性表现在其插件系统上,你可以使用插件来扩展 Metalsmith 的功...

    5 年前
  • npm 包 @harmonyhub/client 使用教程

    前言 @harmonyhub/client 是一个基于 Node.js 和 Typescript 建立的 npm 包。它可以让开发者更容易的与 Harmony Hub 进行交互。

    5 年前
  • npm包@andrewmccall/hubot-hipchat使用教程

    前言 在日常的前端开发中,我们经常会使用到一些现成的npm包来加快开发效率。而在部分公司的工作流程中,会使用到团队内部开发的聊天机器人来帮助处理部分重复性工作和协作沟通。

    5 年前
  • npm 包 node-xmpp-server 使用教程

    前言 在前端开发中,我们常常需要与后端进行实时通信,而 XMPP 是一种用于实时通信的标准协议。在 Node.js 中,我们可以使用 node-xmpp-server 这个 npm 包快速搭建自己的 ...

    5 年前
  • npm 包 gmail-notifier 使用教程

    在开发过程中,你可能需要定期查收邮件,以确保没有重要信息被忽略。在这种情况下,直接登录 Gmail 并频繁检查会很不方便。npm 包 gmail-notifier 可以帮助你避免这个问题,为你提供一个...

    5 年前
  • npm 包 brobbot-xmpp 使用教程

    介绍 Brobbot-xmpp 是一个基于 Node.js 的 XMPP 机器人,它可以连接到一个 XMPP 服务器,通过聊天室或私人会话与用户交互。 安装 安装 brobbot-xmpp 可以使用 ...

    5 年前
  • npm 包 @xmpp/xml 使用教程

    简介 @xmpp/xml 是一个基于 JavaScript 的 XMPP XML 库,用于处理 XMPP 协议中的 XML 数据。它提供了一个简单、轻量级和易于使用的 API,可以帮助你在前端开发中处...

    5 年前
  • npm 包 @xmpp/streamparser 使用教程

    在前端开发中,一些常用的功能会被封装成 npm 包,供开发者使用,这样可以提高开发效率和代码质量。@xmpp/streamparser 是一个可以解析 XMPP 流的 npm 包,下面将详细介绍它的使...

    5 年前
  • npm 包 @xmpp/jid 使用教程

    前言 在前端开发中,我们经常要用到各种第三方库和组件。而在这些库中,有一种非常常见的库叫做 npm 包。npm(Node Package Manager)是一个基于 Node.js 的包管理器,提供了...

    5 年前
  • 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 年前

相关推荐

    暂无文章