在 web 开发中,构建完整的 CRUD(Create/Read/Update/Delete) API 是一项必不可少的工作。Hapi 是一个被广泛使用的 Node.js Web 应用框架,它支持快速,可靠的编写和扩展应用程序。MongoDB 是一个高效,可扩展,NoSQL 数据库,能够应对处理大量数据和高并发请求。
在本文中,我们将介绍如何使用 Hapi 和 MongoDB 来构建完整的 CRUD API。我们将会通过详细的步骤指导您完成这个过程,并提供一些示例代码作为参考实现。
步骤 1:安装必备软件
在开始构建我们的 API 之前,我们需要确保我们已经安装了必要的软件。这包括:
- Node.js
- Hapi.js
- MongoDB
要安装 Node.js,请访问 Node.js 官方网站 并按照说明进行安装。一旦完成,您应该能够在终端窗口中键入 node -v
命令来确保 Node.js 已经正确安装。
要安装 Hapi.js,请打开终端窗口,并运行以下命令:
npm install hapi
要安装 MongoDB,请访问 MongoDB 官方网站 并按照说明进行安装。一旦完成,您应该能够在终端窗口中键入 mongod --version
命令来确保 MongoDB 已经正确安装。
步骤 2:初始化项目
在我们开始编写代码之前,我们需要初始化一个空的 Node.js 项目。在本文中,我们将使用 npm,但是您也可以选择使用 yarn 或任何其他您喜欢的包管理器。
打开终端窗口,并运行以下命令:
mkdir hapi-mongodb-crud-api cd hapi-mongodb-crud-api npm init -y
这将创建一个项目目录并初始化一个 package.json
文件。
步骤 3:安装依赖库
在我们开始编写代码之前,我们需要安装一些需要使用的依赖库。在本文中,我们将使用以下库:
hapi
:Hapi.js 框架mongoose
:一个 MongoDB 的对象数据模型库hapi-swagger
:一个用于生成 API 文档的 Hapi.js 插件
在终端窗口中运行以下命令安装这些库:
npm install --save hapi mongoose hapi-swagger
这将下载依赖库并将它们添加到 package.json
文件中。
步骤 4:编写代码
1. 配置数据库连接
首先,我们需要在我们的代码中配置 MongoDB 数据库连接。在项目根目录中创建一个名为 database.js
的文件,并在其中编写以下代码:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- - -------- - - -------------------- ----- --------- - ----- -- -- - --- - ----- -------------------------- - ---------------- ----- ------------------- ----- --------------- ----- ----------------- ------ --- -------------------- ------------ - ----- ----- - --------------------------- ---------------- - -- -------------- - ----------
在上面的代码中,我们首先导入了 mongoose
,然后还导入了名为 mongoURI
的变量,该变量存储 MongoDB 数据库的连接字符串。我们使用 mongoose.connect()
方法来连接到 MongoDB,并使用 async/await
风格来处理异步操作。
2. 编写数据模型
接下来,我们需要在代码中编写数据模型定义。在本文中,我们将使用一个简单的模型定义,代表一个用户模型。
在项目根目录中创建一个名为 models.js
的文件,并在其中编写以下代码:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ---------- - --- ---------------- - ----- - ----- ------- --------- ----- -- ------ - ----- ------- --------- ----- ------- ----- -- --------- - ----- ------- --------- ----- -- -- - ----------- ----- -- -- ---------- -- - -- ----- ---- - ---------------------- ------------ -------------- - -----
在上面的代码中,我们首先导入了 mongoose
。我们定义了一个简单的用户模型,包含 name
,email
和 password
字段。我们还使用 timestamps
选项来自动添加一个 createdAt
和 updatedAt
字段。
3. 编写路由
现在我们可以开始定义 API 路由。在项目根目录中,创建一个名为 routes.js
的文件,并在其中编写以下代码:
-- -------------------- ---- ------- ----- --- - --------------- ----- ---- - -------------------- -------------- - - - ------- ------ ----- ---- -------- --------- -- -- - ------ - -------- ------ ------- -- -- -- -- ------ - ---- - ------- ------- ----- --------- -------- - --------- - -------- ------------ ----- ------------------------ ------ -------------------------------- --------- ------------------------------- --- -- -- -------- ----- --------- -- -- - --- - ----- ---- - ---------------- ----- ------------ - ----- -------------- ------ ---------- --- -- -------------- - ------ ------------ -------- ----- ------- ------- ------------- - ----- ------- - --- ----------- ----- --------------- ------ - ----- ------- -- - ----- ----- - ------------------- ------ ------------ -------- ------- -- ------ ----- ------------- - -- -- -- --- --- ----- - ------- ------ ----- --------- -------- ----- --------- -- -- - --- - ----- ----- - ----- ------------ ------ - ----- -- - ----- ----- - ------------------- ------ ------------ -------- ------- -- ----- ------ ------------- - -- -- -- --- - ---- -- -- - ------- ------ ----- -------------- -------- ----- --------- -- -- - --- - ----- ---- - ----- --------------------------------- -- ------- - ------ ------------ -------- ----- --- ------ ------------- - ------ - ---- -- - ----- ----- - ------------------- ------ ------------ -------- ------- -- ----- ----- ------------- - -- -- -- ------ - ---- -- -- - ------- ------ ----- -------------- -------- - --------- - -------- ------------ ----- ------------- ------ --------------------- --------- -------------------- --- -- -- -------- ----- --------- -- -- - --- - ----- - -- - - --------------- ----- ---- - ---------------- ----- ------------ - ----- ------------------ -- --------------- - ------ ------------ -------- ----- --- ------ ------------- - -- ------ -------------- ------ ---------- --- - ------ ------------ -------- ----- ------- ------- ------------- - ----- ----------- - ----- -------------------------- ----- - ---- ----- --- ------ - ----- ----------- -- - ----- ----- - ------------------- ------ ------------ -------- ------- -- ------ ----- ------------- - -- -- -- ------ - ---- -- -- - ------- --------- ----- -------------- -------- ----- --------- -- -- - --- - ----- - -- - - --------------- ----- ------------ - ----- ------------------ -- --------------- - ------ ------------ -------- ----- --- ------ ------------- - ----- --------------------------- ------ - -------- ----- -------- -- - ----- ----- - ------------------- ------ ------------ -------- ------- -- ------ ----- ------------- - -- -- --
在上面的代码中,我们首先导入了 Joi
(一个用于数据验证的库)和 User
模型。我们定义了 5 个路由来处理 API 的 Create/Read/Update/Delete 操作。
我们使用 validate
选项来验证创建和更新用户操作的负载。如果验证失败,我们将返回一个 400 响应代码。如果请求成功,我们将使用 User
模型来插入或更新数据。
4. 启动服务器
现在我们已经编写了所有的代码,我们可以启动服务器来测试我们的 API。创建一个名为 index.js
的文件,并在其中编写以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - -------------------- ----- --------- - ---------------------- ----- - ---- - - -------------------- ----- ---- - ----- -- -- - ----- ------ - ------------- ----- ----- ----- ------------ --- --------------------- ----- ------------ ----- --------------- ------------------- ------- --- --------------------- -- ------------------ -- --------------------
在上面的代码中,我们首先导入了 Hapi
、routes
和 connectDB
,然后定义了一个 init()
异步函数,其中我们首先创建服务器实例并定义了端口号,接着定义了路由的处理,并完成了 MongoDB 数据库的连接操作。最后我们通过调用 server.start()
来启动服务器。
步骤 5:生成 API 文档
一般地,我们需要为我们的 API 文档生成一些漂亮的 UI 来方便使用者查看和测试。在本文中,我们将使用 hapi-swagger
插件来自动生成 API 文档,该插件提供了交互式的 API 文档UI。
我们需要修改一下 index.js
文件,为 Hapi.js 服务器注册 hapi-swagger
插件。代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - -------------------- ----- --------- - ---------------------- ----- - ---- - - -------------------- ----- ---- - ----- -- -- - ----- ------ - ------------- ----- ----- ----- ------------ --- ----- ----------------- ------- ------------------------ -------- - ----- - ------ ----- ------- ---- ----- -------- -------- -- -- --- --------------------- ----- ------------ ----- --------------- ------------------- ------- --- --------------------- -- ------------------ -- --------------------
在上面的代码中,我们首先导入了 Hapi
、routes
和 connectDB
,然后定义了一个 init()
异步函数,其中我们首先创建服务器实例并定义了端口号,在服务器注册 hapi-swagger
插件,并定义了 API 文档的基本信息。接着定义了路由的处理,并完成了 MongoDB 数据库的连接操作。最后我们通过调用 server.start()
来启动服务器。
结论
使用 Hapi 和 MongoDB 构建完整的 CRUD API 是一项必须要掌握的技能。在本文中,我们提供了关于如何使用 Hapi 和 MongoDB 来构建完整的 CRUD API 的详细说明和示例代码,希望能对您有所帮助。这个示例 API 仅仅只是一个简单的示例,您可以根据自己的需求进行修改,并使用更高级的功能来扩展它。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f27c5da44b36ee5766111a