前置条件
Postman测试工具 Node环境 Visual Studio Code代码编辑器
说明:在自己练习postman接口测试的时候没有资源,想要通过Node搭建环境,体会整个流程
步骤1:创建Node.js项目
1.在VSCode中,创建新的文件夹,在这里我们命名为:my-api
2.在VSCode中,打开刚才新建创建文件夹的终端
步骤 2: 安装所需的Node.js依赖
1.对项目进行初始化
//-y选项会自动跳过所有提示,使用默认设置 npm init -y
2.安装Express框架,用于创建服务器
npm install express
3.安装body-parser,用于解析请求体
npm install body-parser
3.安装jsonwebtoken,用于生成和验证JWT
npm install jsonwebtoken
步骤3:创建项目文件
在你的项目目录中创建一个名为server.js的文件,代码如下:
server.js
// 引入 Express 框架,用于构建 Web 服务器和处理 HTTP 请求 const express = require('express'); // 引入 body-parser 中间件,用于解析 HTTP 请求体中的 JSON 数据 const bodyParser = require('body-parser'); // 引入 jsonwebtoken 库,用于生成和验证 JSON Web Tokens (JWT) const jwt = require('jsonwebtoken'); // 引入 bcrypt 库,用于密码的哈希和比较 const bcrypt = require('bcrypt'); // 创建一个 Express 应用实例 const app = express(); // 使用 body-parser 中间件来解析 JSON 格式的请求体 app.use(bodyParser.json()); // 定义一个 POST 路由 '/register',用于处理用户注册请求 app.post('/register', async (req, res) => { try { // 从请求体中解构出用户名和密码 const { username, password } = req.body; // 使用 bcrypt 库对用户密码进行哈希处理 const hashedPassword = await bcrypt.hash(password, 10); // 存储用户信息到数据库(这里只是示例,没有实际调用数据库) // 假设存储成功 res.status(201).json({ message: 'User registered successfully' }); } catch (error) { // 如果发生错误,返回 500 状态码和错误消息 res.status(500).json({ message: 'An error occurred during registration' }); } }); // 定义一个 POST 路由 '/login',用于处理用户登录请求 app.post('/login', async (req, res) => { try { // 从请求体中解构出用户名和密码 const { username, password } = req.body; // 验证用户信息(这里只是示例,没有实际调用数据库) // 假设验证成功 const user = { id: 1, username: 'exampleUser' }; // 使用 jwt 库生成一个包含用户信息的 JWT const token = jwt.sign({ user }, 'secretKey', { expiresIn: '1h' }); // 返回 JWT 给客户端 res.status(200).json({ token }); } catch (error) { // 如果验证失败或发生其他错误,返回 401 状态码和错误消息 res.status(401).json({ message: 'Invalid credentials' }); } }); // 定义一个 POST 路由 '/update-password',用于处理修改密码请求 app.post('/update-password', authenticate, async (req, res) => { try { // 从请求体中解构出用户名和新密码 const { username, newPassword } = req.body; // 使用 bcrypt 库对新密码进行哈希处理 const hashedPassword = await bcrypt.hash(newPassword, 10); // 更新密码(这里只是示例,没有实际调用数据库) // 假设更新成功 res.status(200).json({ message: 'Password updated successfully' }); } catch (error) { // 如果更新密码时发生错误,返回 500 状态码和错误消息 res.status(500).json({ message: 'An error occurred during password update' }); } }); // 定义一个认证中间件函数 authenticate function authenticate(req, res, next) { // 从请求头中获取 JWT const token = req.headers.authorization; try { // 使用 jwt 库验证 JWT const payload = jwt.verify(token, 'secretKey'); // 将验证后的用户信息附加到请求对象上,供后续路由使用 req.user = payload.user; // 调用 next() 函数,将请求传递给下一个中间件或路由处理器 next(); } catch (error) { // 如果 JWT 验证失败,返回 401 状态码和错误消息 res.status(401).json({ message: 'Unauthorized' }); } } // 启动服务器并监听指定的端口 const PORT = process.env.PORT || 3000; app.listen(PORT, () => { // 当服务器成功启动后,在控制台输出服务器运行的端口信息 console.log(`Server is running on port ${PORT}`); });
步骤4:启动服务器
1.在控制台启动server.js
node server.js
2.通过链接地址去浏览器查看以确保开启成功:http://localhost:3000/register
步骤5:使用Postman测试API
一、注册路由测试
1.打开Postman,创建一个新的HTTP POST请求
2.设置请求的URL为你的服务地址加上/register路径:http://localhost:3000/register
3.设置请求体为JSON格式,包含用户名和密码:
{ "username": "newUser", "password": "password123" }
4.选择Send按钮发送请求。如果注册成功,你应该看到一个状态码为201的响应和一个成功消息
二、登录路由测试
1.创建一个新的HTTP POST请求
2.设置URL为http://localhost:3000/login
3.请求体应该是JSON格式,包含用户名和密码:
{ "username": "newUser", "password": "password123" }
4.发送请求后,如果登录成功,你应该会收到一个状态码为200的响应,包含一个JWT token
三、修改密码路由测试
为了测试修改密码的功能,需要先登录以获取一个有效的JWT token。使用上面的登录请求登录,然后保存返回的token。
1.创建一个新的HTTP POST请求
2.设置URL为http://localhost:3000/update-password
3.在请求头中添加一个Authorization字段,值为Bearer后跟你的JWT token
4.请求体应该是JSON格式,包含用户名和新密码:
{ "username": "newUser", "newPassword": "newPassword123" }
发送请求后,如果密码更新成功,你应该会收到一个状态码为200的响应和一个成功消息。
注意
在实际的生产环境中,需要将'secretKey'替换为一个安全的密钥,并确保它在服务器和客户端都是保密的。 为了安全起见,应该使用HTTPS来保护客户端和服务器之间的通信。 在注册和登录时,应该添加更多的验证和错误处理逻辑,以确保输入的有效性和安全性。 在修改密码的请求中,应该验证新密码和确认密码是否匹配。
这些步骤应该可以帮助你在Postman中测试你的Node.js API。如果你遇到任何问题,可以根据错误消息进行调试。
版权归原作者 GIR-190 所有, 如有侵权,请联系我们删除。