使用 Fastify 和 Knex.js 构建 CRUD API 的实战指南

阅读时长 7 分钟读完

前言

在现代前端开发中,构建一个高效、易于调试、可维护、可扩展的 API 是至关重要的。Fastify 是一个高效于体积的 JavaScript 框架,它有着极快的速度和低延迟, 而Knex.js是一个流行的 JavaScript SQL 查询构建器, 它允许您使用纯 JavaScript 和链式 API 从数据库中构建 SQL 查询。本指南旨在介绍如何使用这两种工具来构建一个 CRUD API,并提供详细的示例代码。

前置条件

在开始本指南之前,您需要对 JavaScript、Node.js、ES6、SQL 等方面有一定的了解。

安装 Fastify 和 Knex.js

在开始构建 CRUD API 之前,您需要先安装 Fastify 和 Knex.js。 您可以使用以下命令来安装它们:

初始化项目

在安装完 Fastify 和 Knex.js 之后,您可以通过以下命令初始化一个新项目:

安装其他必需的软件包

在我们继续之前,我们需要安装其他一些必要的软件包。这里我们会使用 fastify-plugin 以及 fastify-swagger。您可以使用以下命令安装它们:

初始化数据库

在我们的示例中,我们将使用 PostgreSQL 数据库。您需要安装 PostgreSQL 和 pgAdmin,在您的数据库服务器上创建一个数据库。然后创建一个名为 todos 的新表,并添加以下列:

在 Fastify 中创建 CRUD API

现在,我们已经完成了基本的设置,我们可以开始使用 Fastify 和 Knex.js 来构建我们的 CRUD API 了。

创建 Fastify 实例

在这一步中,我们需要创建一个 Fastify 实例并将其公开在 http://localhost:3000

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

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

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

创建数据库连接

接下来,我们需要创建与数据库的连接。 我们将使用 Knex.js 来构建和操作 SQL 查询,请使用以下示例代码创建与 PostgreSQL 数据库的连接:

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

在上面的示例中,我们指定了我们连接到的数据库的详细信息,在本地服务器上直接连接。

定义数据表结构

在这一步中,我们将定义数据库表结构的数据模型。请使用以下示例代码创建 todos 数据表的数据模型:

这里我们使用 knex.schema 的 createTable() 方法来定义我们的数据模型。

创建基本的 CRUD API

现在我们已经定义了数据模型,可以开始创建我们的 CRUD API 了。我们将实现以下函数:

  • GET /todos: 返回所有存储在数据库中的待办事项;
  • GET /todos/:id: 返回具有给定 ID 的单个待办事项;
  • POST /todos: 创建一个新的待办事项;
  • PUT /todos/:id: 更新具有给定 ID 的现有待办事项;
  • DELETE /todos/:id: 删除具有给定 ID 的待办事项。

使用以下示例代码实现基本的 CRUD API:

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

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

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

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

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

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

在上面的代码中,我们使用 fastify.get()fastify.post()fastify.put()fastify.delete() 方法来创建相应的 GETPOSTPUTDELETE 请求路由。

使用 Swagger 规范为 API 添加文档

最后,我们将使用 Swagger 规范为我们的 API 添加文档和自动化 API 工具。使用以下示例代码来配置 Swagger 规范:

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

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

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

options 对象中,我们指定了 API 的标题和版本,并将 exposeRoute 参数设置为 true,以便自动生成 API 文档。

总结

到此,我们已经为您演示了如何使用 Fastify 和 Knex.js 来构建一个基本的 CRUD API。考虑到您需要的功能,您可以根据您的需要扩展 API。在您的项目中使用这个基本的 API,可以为您的项目带来很多帮助。我们希望这篇文章能够在您的项目开发中发挥帮助作用,并为您的开发之旅提供指导和帮助。

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

纠错
反馈