npm 包 @resin/pinejs 使用教程

阅读时长 7 分钟读完

介绍

@resin/pinejs 是一个基于 Express 的后端框架,通过简单的配置可以快速搭建一个 API 服务。它可以与各种数据存储进行配合使用,包括关系型数据库和非关系型数据库。

@resin/pinejs 最大的特点是它使用 JSON Schema 来定义 API 接口和数据模型。开发者只需编写 JSON Schema,@resin/pinejs 就可以根据它生成相应的 API 接口和数据模型。这使得 API 的开发过程更加自动化、高效。

安装

使用 npm 安装:

基本用法

编写 JSON Schema

在使用 @resin/pinejs 开发 API 的时候,我们需要先定义数据模型。这里我们使用 JSON Schema 来定义,示例代码如下:

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

这是一个简单的用户数据模型,它包括 id、name 和 email 三个属性。

定义路由

一旦我们定义好了 JSON Schema,接下来需要使用 @resin/pinejs 提供的一系列函数来定义路由。路由的定义过程中可以指定使用哪个 JSON Schema 来处理相关的 API 请求。示例代码如下:

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

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

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

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

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

这里我们先定义了一个 express.Router 对象,然后引入了 @resin/pinejs 和 express。接着我们加载了之前定义的 JSON Schema,然后使用 pinejs.enforceSchema 函数将 JSON Schema 应用于 create、update 和 delete 操作。最后,我们使用 pinejs.middleware 函数将 pinejs 集成到 express 中,指定了 API 的版本和资源 URL,完成了路由的定义。

启动服务

假如我们将上面的代码保存在一个名为 app.js 的文件中,现在我们要启动服务:

这时我们就可以在浏览器中访问 http://localhost:3000/api/v1/user 来查看 API 的返回结果了。

深入使用

除了基本用法之外,@resin/pinejs 还有很多高级用法。

使用嵌套 JSON Schema

在实际开发中,我们常常需要使用嵌套的 JSON Schema 来描述复杂的数据结构。@resin/pinejs 也提供了相应的 API 支持,示例代码如下:

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

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

我们可以按照这样的方式定义多层嵌套的 JSON Schema,然后应用到 @resin/pinejs 中来生成相应的 API 接口。

使用自定义路由前缀

如果我们需要将 API 放在指定的路由前缀下,我们可以在 pinejs.middleware 中传递 prefix 参数来实现。示例代码如下:

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

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

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

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

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

这里我们将 API 放在了 /api/v1/ 路径下,可以与其他路由做分隔。

使用自定义错误处理程序

在应用程序中,我们经常需要使用自定义的错误处理程序来处理异常情况。@resin/pinejs 允许我们将自定义的错误处理程序传递给 pinejs.middleware 方法。示例代码如下:

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

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

这里我们将自定义的错误处理程序包含在 pinejs.middleware 中,然后在程序运行过程中,如果出现 UnauthorizedError 或 JsonSchemaValidation 异常,都将被我们的自定义方法捕获,并返回前端相应的错误信息。

总结

@resin/pinejs 是一个非常方便的 API 框架,它通过 JSON Schema 来自动生成 API 接口和数据模型,大大提高了开发效率。我们可以在定义 JSON Schema 的基础上,使用 pinejs.enforceSchema 和 pinejs.middleware 方法,完成 API 的定义和路由注册。在实际开发中,我们也可以使用很多高级用法,如嵌套 JSON Schema、自定义路由前缀和自定义错误处理程序。

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