在前端开发中,使用 API 来与后端服务器进行交互是非常普遍的。而创建一个验证 API 是十分必要的,因为这可以保证用户的信息和数据的安全性。本文将为您介绍如何使用 Hapi.js 和MongoDB 创建一个验证 API,其中 Hapi.js 是一个开源的 Node.js 框架,用于构建可靠的 HTTP 服务,而 MongoDB 是一种流行的 NoSQL 数据库。
创建一个基础的 Hapi.js 服务器
在创建验证 API 之前,我们需要安装和设置一个基础的 Hapi.js 服务器。首先,我们在本地的项目文件夹中初始化一个 Node.js 应用程序:
npm init
安装 Hapi:
npm install hapi
接下来,我们可以创建一个简单的 Hapi.js 服务器,让它监听来自浏览器的 HTTP 请求。在您的项目文件夹中创建一个文件名为 server.js 的文件,并向其中添加以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ------------- ----- ----- ----- ----------- --- ----- -------- ------------- - --- - ----- --------------- - ----- ----- - ----------------- ---------------- - ------------------- ------- --- --------------------- - --------------
在上述代码中,我们首先引入了 Hapi 模块,然后创建了一个 Hapi 服务器并将其配置为在本地主机的端口 3000 上运行。最后,我们定义了一个异步函数 startServer()
来启动服务器并监听来自浏览器的 HTTP 请求。请注意,我们添加了 try/catch
语句来处理任何可能产生的错误。
要运行以上代码,请在您的项目文件夹中运行以下命令:
node server.js
此时,您可以在浏览器中输入 http://localhost:3000
来测试服务器是否运行。如果一切正常,您会看到“Hello World”的信息。
连接 MongoDB 数据库
以下代码将使用 Mongoose 库连接 MongoDB 数据库。MongoDB 是一种流行的 NoSQL 数据库,常用于存储非结构化数据。
npm install mongoose
接下来,在 server.js 文件中添加以下代码,以连接到 MongoDB 数据库:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mydb', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error')); db.once('open', () => console.log('Connected to 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 库来加密和验证用户密码。
npm install jsonwebtoken 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