npm 包 epm-rest 使用教程

阅读时长 13 分钟读完

简介

npm 是目前世界上最大的软件包管理系统,它使得开发者可以方便地共享代码和依赖。而 epm-rest 则是一个基于 npm 的包装工具,它可以将一个 npm 包转换成 restful API,并提供了一些很棒的功能,例如:

  • 自定义 API 端点 (endpoint)
  • 自定义 URL 路由规则
  • 支持分页和排序
  • 支持异步操作
  • 支持数据校验

在这篇文章中,我们将介绍如何使用 epm-rest 来创建一个 restful API,并提供一些示例代码来帮助您更好地理解 epm-rest 的使用方法。

安装

首先,您需要使用 npm 来全局安装 epm-rest:

安装完成后,您可以使用以下命令来确认安装是否成功:

创建一个 restful API

接下来,让我们来创建一个简单的 restful API。在示例中,我们将创建一个电影数据库,支持对电影进行增删改查的操作。

安装必要的依赖

在创建 API 之前,我们需要先安装一些必要的依赖:

  • body-parser 用于解析 HTTP 请求的主体
  • express 是 Node.js 最流行的 web 框架,能够帮助我们创建 web 应用和 API
  • mongoose 是一个 MongoDB 对象模型工具,用于将 MongoDB 与 Node.js 应用程序进行连接
  • mongoose-hidden 是一个 Mongoose 插件,用于隐藏模型中的指定字段

创建模型

接下来,我们需要定义 Movie 模型,用于描述一部电影的属性。打开 models/Movie.js 文件,并添加以下代码:

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

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

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

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

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

这里,我们使用 Mongoose 来定义电影模型,每部电影都有标题、年份和评分属性。另外,我们还添加了一个“created_at”字段,用于跟踪每个文档的创建日期。

创建 API 端点

接下来,我们需要创建一个电影 API 端点。在 routes/movies.js 文件中添加以下代码:

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

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

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

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

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

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

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

在这里,我们定义了一个名为“movies”的端点,它包含以下四个方法:

  • GET /movies:获取所有的电影
  • GET /movies/:id:根据 ID 获取电影
  • POST /movies:创建一部新电影
  • PUT /movies/:id:更新一部电影
  • DELETE /movies/:id:删除一部电影

配置 API 服务

接下来,我们需要在 app.js 中配置和启动 API 服务。在 app.js 中添加以下代码:

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

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

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

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

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

-- ----- --- -------
----- ---- - ---------------- -- -----
---------------- -- -- -
    ---------------------- -- ---- - - ------
---
  • 首先连接到 MongoDB 数据库。
  • 然后使用 body-parser 中间件处理 HTTP 请求主体。
  • 配置“movies”路由,将所有电影相关的请求路由到 routes/movies.js 文件中。
  • 启动 API 服务,并在控制台上输出消息。

到此为止,我们已经完成了一个简单的 restful API 的创建和配置。

使用 epm-rest 将 API 导出为 restful API

现在,我们需要将整个项目导出为 restful API。在项目根目录下运行以下命令:

这会生成一个新的文件夹“api”,其中包含了一个独立的 express 应用程序。

使用自定义端点

现在,让我们来使用 epm-rest 提供的一些灵活的功能。

通过使用 epm-rest,您可以自定义 API 端点。例如,您可以将“GET /movies”端点重命名为“GET /films”。

在 routes/movies.js 中添加以下代码:

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

然后,在 config/express.js 文件中添加以下代码:

现在,您可以使用“GET /films”端点来获取所有电影了。

自定义 URL 路由规则

除了自定义端点之外,您还可以自定义 URL 路由规则。

例如,您可以将“GET /movies/:id”端点更改为“GET /films/:id”端点。

在 routes/movies.js 中添加以下代码:

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

然后,在 config/express.js 文件中添加以下代码:

现在,您就可以使用“GET /films/:id”端点来获取指定的电影了。

数据校验

epm-rest 还提供了一些非常有用的数据验证功能。

首先,在 models/Movie.js 中添加以下代码:

我们向标题、年份、评分和导演字段添加了一些验证规则。标题和导演字段只允许包含字母数字和空格,年份必须在 1900 年和当前年份之间,评级必须在 0 和 10 之间。

当您尝试创建一个不符合规则的电影时,将收到以下错误消息:

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

分页和排序

最后,您还可以使用 epm-rest 支持的分页和排序功能来更好地管理电影数据库。

接下来,我们将实现一个分页和排序逻辑,允许用户使用以下请求参数:

  • page:当前页号,默认值为 0。
  • size:每页的记录数,默认值为 10。
  • sort:排序规则,默认值为“-created_at”。

在 routes/movies.js 中添加以下代码:

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

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

然后,在 config/express.js 文件中修改以下代码:

现在,您可以使用“GET /movies?page=1&size=5&sort=-rating”端点来获取按评级排序的第二页电影列表。

结论

在这篇文章里,您学习了如何使用 epm-rest 将一个普通的 Node.js 应用程序导出为 restful API,并使用 epm-rest 提供的一些功能来进行定制。我们创建了一个电影数据库,支持分页和排序、数据校验等一系列功能,希望这篇文章对您有所帮助。

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

纠错
反馈