在前端开发中,使用 API 来与后端服务器进行交互是非常普遍的。而创建一个验证 API 是十分必要的,因为这可以保证用户的信息和数据的安全性。本文将为您介绍如何使用 Hapi.js 和MongoDB 创建一个验证 API,其中 Hapi.js 是一个开源的 Node.js 框架,用于构建可靠的 HTTP 服务,而 MongoDB 是一种流行的 NoSQL 数据库。
创建一个基础的 Hapi.js 服务器
在创建验证 API 之前,我们需要安装和设置一个基础的 Hapi.js 服务器。首先,我们在本地的项目文件夹中初始化一个 Node.js 应用程序:
--- ----
安装 Hapi:
--- ------- ----
接下来,我们可以创建一个简单的 Hapi.js 服务器,让它监听来自浏览器的 HTTP 请求。在您的项目文件夹中创建一个文件名为 server.js 的文件,并向其中添加以下代码:
----- ---- - ---------------- ----- ------ - ------------- ----- ----- ----- ----------- --- ----- -------- ------------- - --- - ----- --------------- - ----- ----- - ----------------- ---------------- - ------------------- ------- --- --------------------- - --------------
在上述代码中,我们首先引入了 Hapi 模块,然后创建了一个 Hapi 服务器并将其配置为在本地主机的端口 3000 上运行。最后,我们定义了一个异步函数 startServer()
来启动服务器并监听来自浏览器的 HTTP 请求。请注意,我们添加了 try/catch
语句来处理任何可能产生的错误。
要运行以上代码,请在您的项目文件夹中运行以下命令:
---- ---------
此时,您可以在浏览器中输入 http://localhost:3000
来测试服务器是否运行。如果一切正常,您会看到“Hello World”的信息。
连接 MongoDB 数据库
以下代码将使用 Mongoose 库连接 MongoDB 数据库。MongoDB 是一种流行的 NoSQL 数据库,常用于存储非结构化数据。
--- ------- --------
接下来,在 server.js 文件中添加以下代码,以连接到 MongoDB 数据库:
----- -------- - -------------------- -------------------------------------------- - ---------------- ---- --- ----- -- - -------------------- -------------- --------------------------- ----------- --------- --------------- -- -- ---------------------- -- -----------
在上述代码中,我们首先引入 Mongoose 库,然后使用 mongoose.connect()
方法连接到本地 MongoDB 数据库。继而事件监听,db.on()指当连接发生错误时出发内容的方法,db.once()指当连接成功时的方法。请注意,我们还指定了 useNewUrlParser: true
,以使用 MongoDB 新的 URL 解析器。
现在,我们已成功连接到 MongoDB,我们可以开始设计我们的验证 API 了。
创建验证 API
验证 API 将允许用户注册、登录和注销。在这个示例中,我们将使用 JSON Web Token(JWT)进行用户身份验证和授权。具体地,我们将使用 jsonwebtoken 库来创建新的 JWT 和验证现有 JWT,使用 bcrypt 库来加密和验证用户密码。
--- ------- ------------ ------
以下是如何创建一个基本的验证 API 的代码:
----- ---- - ---------------- ----- -------- - -------------------- ----- --- - ------------------------ ----- --- - --------------- ----- ------ - ------------------ -- ----- ----- ---------- - --- ----------------- ----- - ----- ------- --------- ---- -- ------ - ----- ------- ------- ----- --------- ---- -- --------- - ----- ------- --------- ---- - --- -- ------ ----- ---- - ---------------------- ------------ -- --- ------- -------------------------------------------- - ---------------- ---- --- ----- -- - -------------------- -------------- --------------------------- ----------- --------- --------------- -- -- ---------------------- -- ----------- -- -- ---- ------ ----- ------ - ------------- ----- ----- ----- ----------- --- -- ------ -------------- ------- ------- ----- ------------ -------- ----- --------- -- -- - --- - -- --------- ----- ------ - ------------ ----- ------------------------ ------ -------------------------------- --------- ------------------------------ --- ----- - ----- - - --------------------------------- -- ------- - ------ ------------ ------ ------------------------ ------------- - -- ---------- ----- ------------ - ----- -------------- ------ --------------------- --- -- -------------- - ------ ------------ ------ ----- ------- ------- ------------- - ------- ----- ---- - ----- ------------------- ----- -------------- - ----- ------------------------------------- ------ ----- ---- - --- ------ ----- --------------------- ------ ---------------------- --------- -------------- --- ----- ------------ -- ----- --- ----- ----- - ---------- --- -------- -- ----------------- - ---------- ---- --- ------ ------------ ----- ------------- - ----- ----- - ----------------- ------ ------------ ------ ---------- -------- ----- ------------- - - --- -- ------ -------------- ------- ------- ----- --------- -------- ----- --------- -- -- - --- - -- --------- ----- ------ - ------------ ------ -------------------------------- --------- ----------------------- --- ----- - ----- - - --------------------------------- -- ------- - ------ ------------ ------ ------------------------ ------------- - -- -------- ----- ---- - ----- -------------- ------ --------------------- --- -- ------- - ------ ------------ ------ -------- ----- -- --------- ------------- - -- ---- ----- ------------- - ----- ---------------------------------------- --------------- -- ---------------- - ------ ------------ ------ -------- ----- -- --------- ------------- - -- ----- --- ----- ----- - ---------- --- -------- -- ----------------- - ---------- ---- --- ------ ------------ ----- ------------- - ----- ----- - ----------------- ------ ------------ ------ ---------- --- -- ----- ------------- - - --- -- ------ -------------- ------- ------- ----- ---------- -------- ----- --------- -- -- - -- ---------------- --- ------ ----------------------- - --- -- ----- ----- -------- ------------- - --- - ----- --------------- - ----- ----- - ----------------- ---------------- - ------------------- ------- --- --------------------- - --------------
在上面的代码中,我们创建了一个基本的验证 API,该 API 可以处理用户注册、登录和注销请求。请注意以下几点:
- 我们使用 Mongoose 定义了一个用户模式,并创建了一个 User 模型。
- 我们使用
bcrypt
库对用户密码进行加密和验证。 - 我们使用
jsonwebtoken
库来创建和验证 JWT,以进行用户身份验证和授权。 - 在注册和登录路由中,我们对请求有效负载进行了验证,以确保其包含必要的字段,并且在适当的情况下,我们向客户端发送了适当的错误响应。
- 如果用户成功注册或登录,我们将创建新 JWT 并将其返回到客户端供以后使用。
注意:在实际生产环境中,我们需要将 JWT 保存到客户端的 Cookie 或本地存储中,以在以后的请求中使用。
总结
本文为您介绍了如何使用 Hapi.js 和 MongoDB 创建一个验证 API。我们首先介绍了如何基础的 Hapi.js 服务器和连接到 MongoDB 数据库。然后,我们创建了一个具有注册、登录和注销功能的 API,并使用 JSON Web Token 对用户进行身份验证和授权。
创建验证 API 是任何 Web 应用程序的关键部分之一,因为它们确保用户输入和数据的安全性。如果您在开发 Web 应用程序时遇到了类似的问题,请尝试使用本文中的内容,并仔细查看示例代码。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64ae767248841e9894a87927