前言
在现代前端开发中,构建一个高效、易于调试、可维护、可扩展的 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。 您可以使用以下命令来安装它们:
$ npm install fastify knex
初始化项目
在安装完 Fastify 和 Knex.js 之后,您可以通过以下命令初始化一个新项目:
$ mkdir fastify-knex-crud-api && cd fastify-knex-crud-api $ npm init -y
安装其他必需的软件包
在我们继续之前,我们需要安装其他一些必要的软件包。这里我们会使用 fastify-plugin
以及 fastify-swagger
。您可以使用以下命令安装它们:
$ npm install fastify-plugin fastify-swagger
初始化数据库
在我们的示例中,我们将使用 PostgreSQL 数据库。您需要安装 PostgreSQL 和 pgAdmin,在您的数据库服务器上创建一个数据库。然后创建一个名为 todos
的新表,并添加以下列:
id: serial PRIMARY KEY, title: varchar(100) NOT NULL, description: varchar(200) NOT NULL
在 Fastify 中创建 CRUD API
现在,我们已经完成了基本的设置,我们可以开始使用 Fastify 和 Knex.js 来构建我们的 CRUD API 了。
创建 Fastify 实例
在这一步中,我们需要创建一个 Fastify 实例并将其公开在 http://localhost:3000
:
-- -------------------- ---- ------- ----- ------- - -------------------- ------- ---- -- ----- ---- - ---- -------------------- ----- -- - -- ----- - ---------------------- --------------- - ------------------------ --------- -- --------- --
创建数据库连接
接下来,我们需要创建与数据库的连接。 我们将使用 Knex.js 来构建和操作 SQL 查询,请使用以下示例代码创建与 PostgreSQL 数据库的连接:
-- -------------------- ---- ------- ----- ---- - ----------------- ------- ----- ----------- - ----- ------------ ----- ----------- --------- ----------- --------- ------------------ -- ----- - ---- -- ---- -- - --
在上面的示例中,我们指定了我们连接到的数据库的详细信息,在本地服务器上直接连接。
定义数据表结构
在这一步中,我们将定义数据库表结构的数据模型。请使用以下示例代码创建 todos
数据表的数据模型:
const Todo = knex.schema.createTable('todos', function (table) { table.increments(); table.string('title').notNullable(); table.string('description').notNullable(); });
这里我们使用 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()
方法来创建相应的 GET
、POST
、PUT
和 DELETE
请求路由。
使用 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