使用 Fastify 和 TypeScript 构建 CRUD API 教程

本文将介绍如何使用 Fastify 和 TypeScript 来构建 CRUD API。Fastify 是一个快速和低开销的 Web 框架,可以帮助我们构建高效的 API。而 TypeScript 则是一种强类型的 JavaScript 变体,可以提高代码的可维护性和代码重用性。在本文中,我们将使用 Fastify 和 TypeScript 来构建一个简单的 CRUD API,并带有完整的示例代码。

前置知识

在阅读本文之前,您应该已经具备以下技能和知识:

  • 基本的 JavaScript 和 TypeScript 语法
  • Node.js 的基础知识
  • 使用 npm 或 yarn 管理依赖
  • RESTful API 的基础知识

步骤 1 - 初始化项目

首先,我们需要使用 npm 或 yarn 初始化一个空项目。在终端中执行以下命令:

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

这将在当前目录下创建一个名为 fastify-crud-api 的新项目,并使用默认选项初始化一个 package.json 文件。

步骤 2 - 安装依赖

接下来,我们需要安装用于构建我们的 Fastify API 的依赖。执行以下命令:

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

以上命令将安装以下依赖项:

  • fastify - Fastify 框架
  • fastify-cors - Fastify 跨域资源共享 (CORS) 插件
  • knex - 轻量级 SQL 查询构建器
  • sqlite3 - SQLite3 数据库驱动程序
  • @types/fastify - Fastify 类型定义
  • @types/knex - Knex 类型定义
  • @types/sqlite3 - SQLite3 类型定义

步骤 3 - 配置 TypeScript

TypeScript 可以帮助我们编写更易于维护和重用的代码。在本教程中,我们将使用 TypeScript 作为我们的主要编程语言。为此,我们需要进行一些配置。

首先,我们要安装 TypeScript:

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

然后,我们将创建一个 tsconfig.json 文件,并将以下内容添加到其中:

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

这将使用 ES2017 作为目标编译版本,并禁止任何类型的隐式类型转换。此外,它也设置了 esModuleInterop 标志,这使得我们可以在 TypeScript 项目中轻松地使用 CommonJS 模块。

步骤 4 - 创建和配置 Fastify 服务器

接下来,我们要创建一个 Fastify 服务器。

在项目的根目录下,创建一个新的 src 文件夹,在其中创建一个名为 index.ts 的新文件。在该文件中,我们将创建 Fastify 服务器,然后将其配置为监听 HTTP 请求。

以下是一个完整的 index.ts 文件的示例:

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

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

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

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

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

在上面的示例代码中,我们首先导入了 fastifyfastify-cors 依赖项。然后,我们创建了一个新的 Fastify 服务器实例,并向其注册 CORS 插件。

最后,我们针对 3000 端口启动了 Fastify 服务器,并在控制台输出服务器的地址。

运行以下命令以启动 Fastify 服务器:

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

如果一切都正常,你将会在终端中看到以下输出:

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

现在,我们已经成功创建了一个 Fastify 服务器,并进行了一些基本的配置。在接下来的步骤中,我们将添加一些路由,并将其用于创建、读取、更新和删除资源的 API 端点。

步骤 5 - 添加路由和 API 端点

我们的 Fastify 服务器现在已经可用。接下来,我们将使用 Fastify 路由来定义 CRUD(创建、读取、更新和删除)API 端点。

src/index.ts 文件中,添加以下代码:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以上代码向 Fastify 服务器注册了五个路由:

  • GET /todos - 获取所有的 Todo 项。
  • GET /todos/:id - 获取 id 为特定数字的 Todo 项。
  • POST /todos - 创建新的 Todo 项。
  • PATCH /todos/:id - 更新 id 为特定数字的 Todo 项。
  • DELETE /todos/:id - 删除 id 为特定数字的 Todo 项。

该 API 所使用的数据是 mock 数据。

在运行 API 之前,请确保数据库被创建。有关如何创建数据库的更多信息,请参阅 Knex 文档。

步骤 6 - 运行 API 并测试

现在我们已经完成了 API 的编写。下一步是通过运行 API 并使用 HTTP 客户端来测试它。

在终端中使用以下命令运行 API:

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

一旦服务已经运行,你可以打开 Postman(或任何其他 HTTP 客户端)并从 /todos 发送 GET 请求,以获得所有的 Todo 项。同样,你也可以使用 POST、PATCH 和 DELETE 请求来测试创建、更新和删除 Todo 项的功能。

结论

我们已经成功地使用 Fastify 和 TypeScript 创建了一个简单的 CRUD API。在这个过程中,我们使用了 Fastify 和 TypeScript 的强大功能,帮助我们构建了一个高效和易于维护的 API。这个 API 还可以延伸为适应任何应用程序需求的高级应用程序。

由于使用的是 mock 数据,因此你可以更改代码并添加任何类型的数据存储。本教程应该让你有一个了解如何使用 Fastify 和 TypeScript 构建 API 的基础,让你可以从这里进一步扩展构建高级 API。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67044fadd91dce0dc84e1421