npm 包 rest-api-starter 使用教程

阅读时长 8 分钟读完

在现代的 Web 开发中,为了加快开发进程,提高效率和代码可维护性,API(Application Programming Interface)成为了前端界面和后端逻辑交互的标准方式。一方面,后端需要定义一系列的 API 接口,以便让前端可以调用,实现前后端分离的开发模式;另一方面,前端团队也需要快速地搭建出自己的 API 服务,以便快速基于后端 API 进行开发。

因此,出现了一系列的 API 开发框架和工具,其中一个不错的工具就是 npm 包 rest-api-starter。下面将介绍如何使用它来快速搭建 API 服务。

rest-api-starter 简介

rest-api-starter 是一个基于 Express 和 MongoDB 的 RESTful API 开发框架,它可以帮助我们快速搭建一个符合 RESTful API 规范的 Web 服务。通过 rest-api-starter,我们可以快速构建增、删、改、查等常见的 API 接口,并方便地进行权限控制和输入验证。

安装

首先,我们需要在本地环境中安装 Node.js 和 MongoDB,然后就可以使用 npm 在命令行中安装 rest-api-starter 了。

使用

安装完成后,我们需要引入 rest-api-starter 模块,并初始化一个 Express 应用程序。

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

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

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

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

上面这段代码中,我们先引入了 rest-api-starter 模块和 express 框架。由于 rest-api-starter 是基于 Express 开发的,我们需要先初始化一个 Express 应用程序。然后,我们在应用程序中添加 express.json() 中间件,以便正确地解析请求参数。

接着,我们使用 restApiStarter.init() 方法初始化 rest-api-starter 框架。该方法接受一个参数对象,其中包含了以下几个属性:

  • app:一个已经初始化的 Express 应用程序
  • mongoUri:MongoDB 数据库的连接地址
  • apiPath:API 路径前缀
  • auth:JWT 鉴权的配置

最后,我们在应用程序中添加一个监听器开始监听端口,以便启动我们的 Web 服务。

使用上面的代码启动应用程序后,我们可以在浏览器中打开 http://localhost:3000/api/v1/,看到 rest-api-starter 框架的欢迎信息。

API 接口定义

由于 rest-api-starter 框架是基于 Express 的,我们可以使用 Express 的路由方法来定义 API 接口。例如,下面是一个简单的 GET 接口:

在上面的代码中,我们使用 api 对象来定义 /users 路由,它将会响应 GET 请求,并返回 User 集合中的所有数据。请注意,我们使用 await 来等待 User.find() 方法返回数据,因为该方法是异步的。

除了使用 Express 的路由方法来定义接口之外,我们还可以使用 rest-api-starter 框架提供的一些实用工具来快速构建增、删、改、查、排序、分页等常见的 API 接口。例如,下面是一个简单的增加用户的接口:

在上面的代码中,我们使用 api.create() 可以自动构建一个 POST 接口,用来创建一个新的 User 对象。我们在其中使用 User.create() 方法,传入 req.body 对象作为参数,用来构建新的 User 对象。最后,我们将创建好的对象以 JSON 格式返回给调用方。

除了使用 api.create() 方法之外,我们还可以使用 api.getOne()、api.update()、api.delete()、api.list() 等方法来构建其他 BREAD 操作接口。

鉴权和输入验证

为了保护 API 接口的安全性,我们需要对 API 接口进行鉴权和输入验证。在 rest-api-starter 框架中,我们可以使用 JWT(JSON Web Token)鉴权机制,来保证只有已登录用户才能够访问某些 API 接口,同时也可以使用 Joi 验证库来对输入数据进行验证。

例如,下面是一个需要鉴权的 GET 接口:

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

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

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

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

在上面的代码中,我们首先定义一个 authenticate() 中间件函数,用于验证用户的 JWT 令牌。该函数会检查请求的 Authorization header 是否有效,然后使用 jwt 库解析令牌,将解析后的用户信息存储在 req.user 对象中,以便后续的 API 接口可以使用该信息。

我们在 /users 路由的回调函数中添加了 authenticate 中间件,这样只有经过鉴权的用户才能够访问该 API 接口了。

除了鉴权之外,我们还可以使用 Joi 验证库来检查输入的参数是否合法。例如,下面是一个验证 name 和 password 字段是否存在的接口:

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

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

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

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

在上面的代码中,我们先定义了一个 userSchema 对象,它使用了 @hapi/joi 库中的链式调用语法,来定义 User 对象中必须存在的字段和其对应的验证规则。

接着,在 /users 路由的回调函数中,我们使用 userSchema.validate() 方法来验证 req.body 对象是否符合以上的规则。如果存在验证错误,我们将返回一个 400 错误,其中包含错误信息数组。

结论

通过以上的介绍,我们可以看到 rest-api-starter 框架可以帮助我们快速构建符合 RESTful API 规范的 Web 服务。该框架提供了方便的 BREAD 操作接口,同时也提供了 JWT 鉴权和 Joi 验证库,用来保证 API 接口的安全性和输入数据的合法性。如果你是一个前端开发人员,希望快速搭建 API 服务,不妨试试 rest-api-starter 吧!

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

纠错
反馈