本文将介绍如何使用 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
文件的示例:
------ ------- ---- ---------- ------ ---- ---- --------------- ----- ------ - ---------- --------------------- - ------- ---- --- ------------------- ----- -------- -- - -- ----- - ------------------- ---------------- - ------------------- ------- -- ------------- ---
在上面的示例代码中,我们首先导入了 fastify
和 fastify-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