在现代 Web 开发中,RESTful API 变得越来越普遍。RESTful API 使得客户端可以通过 Web 访问服务端资源,以实现各种功能。在本文中,我们将学习如何使用 Hapi.js 和 MongoDB 创建一个 RESTful API。
Hapi.js 和 MongoDB 简介
Hapi.js 是一个内容丰富的 Node.js Web 框架,它提供了许多功能,包括路由、请求验证、缓存等等。Hapi.js 的代码结构清晰,并且易于扩展,因此它非常适合构建中大型 Web 应用程序。
MongoDB 是一个非关系型数据库,它的强大之处在于它的文档结构,这允许我们轻松地存储 JavaScript 对象。MongoDB 是 Web 开发中最受欢迎的 NoSQL 数据库之一。
创建 RESTful API
接下来,我们将使用 Hapi.js 和 MongoDB 进行 RESTful API 的创建和操作。我们将实现一个简单的“待办事项”列表,允许用户添加、获取和删除待办事项。
数据库设计
首先,我们需要设计 MongoDB 数据库结构,它将存储我们的待办列表。我们将创建一个 todos
集合,并存储以下字段:
Field | Type | Description |
---|---|---|
id | String | Todo 的唯一标识符 |
title | String | Todo 的标题 |
completed | Boolean | Todo 是否已完成 |
created | DateTime | Todo 的创建时间 |
updated | DateTime | Todo 的最后更新时间 |
服务器端代码
接下来我们将介绍如何使用 Hapi.js 和 MongoDB 创建 RESTful API。
首先,我们需要安装必要的依赖:
npm install @hapi/hapi mongodb --save
接下来,我们将创建一个新的 Hapi.js 服务器实例:
const Hapi = require('@hapi/hapi'); const server = Hapi.server({ port: 3000, host: 'localhost' });
然后,我们需要连接到 MongoDB 数据库。我们将使用官方的 MongoDB Node.js 驱动程序,如下所示:
const { MongoClient } = require('mongodb'); const uri = 'mongodb://localhost:27017/mydb'; (async () => { const client = await MongoClient.connect(uri); const db = client.db('mydb'); console.log('Connected to MongoDB'); })();
上面的代码将连接到本地 MongoDB 实例,并打印“Connected to MongoDB”的消息。
接下来,我们将定义路由和处理程序,以实现 RESTful API:
-- -------------------- ---- ------- -------------- -- -------- - ------- ------ ----- --------- -------- ----- --------- -- -- - ----- ----- - ----- ---------------------------------------- ------ ------ - -- -- ---------- - ------- ------- ----- --------- -------- ----- --------- -- -- - ----- ---- - ---------------- -------------- - ------ ------------ - --- --------------------- ----- ------ - ----- --------------------------------------- ------ ------------------ - -- -- -------- - ------- ------ ----- -------------- -------- ----- --------- -- -- - ----- ---- - ----- -------------------------------- --- ----------------- --- ------ ----- - -- -- -------- - ------- --------- ----- -------------- -------- ----- --------- -- -- - ----- ------ - ----- ---------------------------------- --- ----------------- --- ------ -------------------- - - ---
上面的代码定义了四个路由,分别处理获取所有待办事项、添加一个新的待办事项、获取一个待办事项和删除一个待办事项的请求。我们使用 async
和 await
来保证异步代码的可读性和可维护性。
最后,我们启动服务器,开始监听:
const start = async () => { await server.start(); console.log(`Server running on ${server.info.uri}`); }; start();
客户端代码
现在我们已经在服务器上成功创建了 RESTful API,下面我们将演示如何使用 JavaScript 客户端与这个 API 进行交互。
让我们考虑一个包含以下 HTML 代码的简单 Web 页面:
-- -------------------- ---- ------- --------- ----- ------ ------ ----------- ------------ ------- ------ -------- --------- --- ---------------- ------ ------ ----------- ------------ ------------------ - --- ------ ------- ----------------- ------------- ------- ------- --------------------------------------------------------- -------- ----- ------- - --------------------------------- ----- ------------ - ----------------------------------- ----- ----------- - ----- -- -- - ----- - ---- - - ----- -------------------- ----------------- - --- ----------------- -- - ----- -- - ----------------------------- ------------ - - ------ --------------- ---------------- - --------- - --- --------------------------------------- -------- -------------------------- ------- -------------------------------------------------- -- ------------------------ --- -- ----- ------- - ----- ------- -- - ----- - ----- -- - - ----- -------------------- - ----- --- ------------------ - --- ----- -------------- - ----- ---------- - ----- ---- -- - ----- ----------------------------- ----- -------------- -- ----- --------------- - ----- ---- ------ -- - ----- --------- - --------------------- ----- --------------------------- - --------- --- ----- -------------- -- -------------- --------------------------------------------------------- ----- ------- -- - ----------------------- ----- ----- - ------------------- ----- --------------- --- --------- ------- -------
上面的代码将使用 axios
库来对 RESTful API 进行请求,通过 document
对象来操作 HTML 页面。在 renderTodos
函数中,我们获取所有待办事项,并将它们渲染到 HTML 页面上。在其他几个函数中,我们使用 axios
库来添加、删除待办事项,以及更新完成状态。
总结
在本文中,我们学习了如何使用 Hapi.js 和 MongoDB 创建 RESTful API。我们创建了一个简单的“待办事项”列表,允许用户添加、获取和删除待办事项。我们介绍了 Hapi.js 和 MongoDB 的基本概念,并演示了如何使用它们来构建现代 Web 应用程序。希望这篇文章对正在学习 Web 开发的人们有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64aa245b48841e9894650ea4