iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >node.js+postman+mongodb搭建测试注册接口的实现
  • 210
分享到

node.js+postman+mongodb搭建测试注册接口的实现

2024-04-02 19:04:59 210人浏览 安东尼
摘要

目录准备工作下载安装PostmanmongoDB连接串配置GET请求测试注册接口搭建创建User数据模型使用body-parser中间件POST请求测试使用User数据模型使用gra

准备工作

申请一个免费的MonGoDB

https://www.mlab.com注册申请一个500M的MongoDB数据库。登录后手动在创建Databases下的Collections中手动创建一个数据库node_app。

在个人首页点击Connect获取node.js连接MongoDB数据库的字符串

mongodb+srv://<username>:<passWord>@cluster0.ylpaf.mongodb.net/node_app

将其中<username>:<password>修改为自己设定的数据库用户名和密码。

下载安装Postman

Https://www.postman.com/注册一个账号,下载安装Postman agent,即可方便地进行GET/POST/PUT等测试。

mongodb连接串配置

安装mongoose用于连接数据库:

> npm install mongoose
> 
> cd C:\Users\xiaoming\source\repos\node_demo\node_app
> mkdir config
> cd config
> new-item keys.js -type file

编辑keys.js配置连接串:

module.exports = {
    mongoURI: "mongodb+srv://<username>:<password>@cluster0.ylpaf.mongodb.net/node_app"
}

编辑server.js入口文件:

const express = require("express");
const mongoose = require("mongoose");

const app = express();
const db = require("./config/keys").mongoURI;

mongoose.connect(db)
        .then(() => console.log("MongoDB connected."))
        .catch(err => console.log(err));

app.get("/", (req, res) => {
    res.send("Hello World!");
})

const port = process.env.PORT || 5000;
app.listen(port, () => {
    console.log(`Server running on port ${port}`);
})

检查是否能连接到数据库:

> nodemon server.js

[nodemon] 2.0.16
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,JSON
[nodemon] starting `node server.js`
Server running on port 5000
MongoDB connected.

数据库连接正常。

GET请求测试

创建路由文件

C:\Users\xiaoming\source\repos\node_demo\node_app\routes\api\users.js

编辑users.js并添加GET请求:

// login & reGISttration
const express = require("express");
const router = express.Router();

router.get("/test", (req,res) => {
    res.json({msg:"Login succeeded!"})
})

module.exports = router;

编辑server.js,导入并使用users.js:

const express = require("express");
const mongoose = require("mongoose");

const app = express();
const users = require("./routes/api/users"); 

const db = require("./config/keys").mongoURI;
mongoose.connect(db)
    .then(() => console.log("MongoDB connected."))
    .catch(err => console.log(err));

// 设置app路由
app.get("/", (req, res) => {
    res.send("Hello World!");
})

// 使用users
app.use("/api/users", users);

const port = process.env.PORT || 5000;
app.listen(port, () => {
    console.log(`Server running on port ${port}`);
})

访问

http://localhost:5000/api/users/test

可以看到

{"msg":"Login succeeded!"}

注册接口搭建

创建User数据模型

创建用户数据模型文件

C:\Users\xiaoming\source\repos\node_demo\node_app\models\User.js

编辑User.js创建用户数据模型:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

// create Schema
const UserSchema = new Schema({
    name:{
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    avatar: {
        type: String
    },
    date: {
        type: Date,
        default: Date.now
    },
})

module.exports = User = mongoose.model("users", UserSchema);

使用body-parser中间件

安装body-parser中间件,可以方便地处理HTTP请求。

> npm install body-parser

编辑server.js使用body-parser:

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");

const app = express();
const users = require("./routes/api/users"); 

const db = require("./config/keys").mongoURI;

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

mongoose.connect(db)
    .then(() => console.log("MongoDB connected."))
    .catch(err => console.log(err));

app.get("/", (req, res) => {
    res.send("Hello World!");
})

app.use("/api/users", users);

const port = process.env.PORT || 5000;
app.listen(port, () => {
    console.log(`Server running on port ${port}`);
})

POST请求测试

编辑users.js增加POST请求:

// @login & registtration
const express = require("express");
const router = express.Router();


router.get("/test", (req,res) => {
    res.json({msg:"Login succeeded!"})
})


router.post("/register", (req, res) => {
    console.log(req.body);
})

module.exports = router;

POST中暂时只有一个打印请求体的操作。

在Postman中的Workspace中测试:

POST http://localhost:5000/api/users/register

Body选择x-www-fORM-urlencoded,在KEY和VALUE中填入测试内容:

KEY         VALUE
email    harlie@google.com

查看终端输出:

Server running on port 5000
MongoDB connected.
[Object: null prototype] { email: 'harlie@google.com' }

说明成功获取到了req.body。

使用User数据模型

首先安装bcrypt包。bcrypt可以用来加密注册用户的密码,避免在数据库中存储明文密码。在https://www.npmjs.com/上可以查看bcrypt包的用法介绍。

> npm install bcrypt

编辑users.js引入并使用User数据模型:

// @login & registtration
const express = require("express");
const router = express.Router();
const bcrypt = require("bcrypt");

const User = require("../../models/User.js");


router.get("/test", (req,res) => {
    res.json({msg:"Login succeeded!"})
})


router.post("/register", (req, res) => {
    //console.log(req.body);

    // check if email already exists
    User.findOne({ email: req.body.email })
        .then((user) => {
            if (user) {
                return res.status(400).json({ email: "邮箱已被注册!" })
            } else {
                const newUser = new User({
                    name: req.body.name,
                    email: req.body.email,
                    password: req.body.password
                })

                // encrypt newUser password
                bcrypt.genSalt(10, function (err, salt) {
                    bcrypt.hash(newUser.password, salt, (err, hash) => {
                        if (err) throw err;

                        newUser.password = hash;
                        newUser.save()
                            .then(user => res.json(user))
                            .catch(err => console.log(err));
                    });
                });
            }
        })
})

module.exports = router;

在Postman中的Workspace中测试POST http://localhost:5000/api/users/register。Body选择x-www-form-urlencoded,在KEY和VALUE中填入测试内容:

email     godfrey@eldenring.com
name      godfrey
password  123456

查看测试输出

{
    "name": "godfrey",
    "email": "godfrey@eldenring.com",
    "password": "$2b$10$hoGzFeIdZyCwEotsYhxEheoGNOCE4QnYYh/WkKoGkuPT0xZI9H10C",
    "_id": "62a4482c00990937d819ea6d",
    "date": "2022-06-11T07:45:48.437Z",
    "__v": 0
}

打开mongodb,在DATABASES下的node_app中查看,会发现多出了一个users的Collection,其中刚好存储了上面我们刚通过POST请求插入的一条数据。

使用gravatar处理头像

在https://www.npmjs.com/package/gravatar中查看gravatar的使用方法。

安装gravatar

> npm i gravatar

编辑users.js增加注册头像(avatar)处理:

// @login & registtration
const express = require("express");
const router = express.Router();
const bcrypt = require("bcrypt");
const gravatar = require("gravatar");

const User = require("../../models/User.js");


router.get("/test", (req,res) => {
    res.json({msg:"Login succeeded!"})
})


router.post("/register", (req, res) => {
    //console.log(req.body);

    // check if email already exists
    User.findOne({ email: req.body.email })
        .then((user) => {
            if (user) {
                return res.status(400).json({ email: "Email already registered!" })
            } else {
                const avatar = gravatar.url(req.body.email, { s: '200', r: 'pg', d: 'mm' });

                const newUser = new User({
                    name: req.body.name,
                    email: req.body.email,
                    avatar,
                    password: req.body.password
                })

                // encrypt newUser password
                bcrypt.genSalt(10, function (err, salt) {
                    bcrypt.hash(newUser.password, salt, (err, hash) => {
                        if (err) throw err;

                        newUser.password = hash;
                        newUser.save()
                            .then(user => res.json(user))
                            .catch(err => console.log(err));
                    });
                });
            }
        })
})

module.exports = router;

在Postman中的Workspace中测试POST http://localhost:5000/api/users/register,Body选择x-www-form-urlencoded。

在KEY和VALUE中填入测试内容:

email     godfrey@eldenring.com
name      godfrey
password  123456

测试会返回报错

{
    "email": "Email already registered!"
}

在KEY和VALUE中填入测试内容:

email      mohg@eldenring.com
name       mohg
password   123456

测试返回

{
    "name": "mohg",
    "email": "mohg@eldenring.com",
    "password": "$2b$10$uSV2tmA5jH6veLTz1Lt5g.iD5QKtbJFXwGsJilDMxIqw7dZefpDz.",
    "avatar": "//www.gravatar.com/avatar/c5515cb5392d5e8a91b6e34a11120ff1?s=200&r=pg&d=mm",
    "_id": "62a44f12d2c5293f0b8e9c2b",
    "date": "2022-06-11T08:15:14.410Z",
    "__v": 0
}

在浏览器中打开

www.gravatar.com/avatar/c5515cb5392d5e8a91b6e34a11120ff1?s=200&r=pg&d=mm

到此这篇关于node.js+postman+mongodb搭建测试注册接口的实现的文章就介绍到这了,更多相关node postman mongodb注册接口内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: node.js+postman+mongodb搭建测试注册接口的实现

本文链接: https://www.lsjlt.com/news/151247.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node.js+postman+mongodb搭建测试注册接口的实现
    目录准备工作下载安装Postmanmongodb连接串配置GET请求测试注册接口搭建创建User数据模型使用body-parser中间件POST请求测试使用User数据模型使用gra...
    99+
    2024-04-02
  • node.js+postman+mongodb如何搭建测试注册接口
    这篇文章主要讲解了“node.js+postman+mongodb如何搭建测试注册接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node.js+postman+mongodb如何搭建测试...
    99+
    2023-07-02
  • postman测试接口的类型传值怎么实现
    这篇文章主要介绍了postman测试接口的类型传值怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇postman测试接口的类型传值怎么实现文章都会有所收获,下面我们一起来看看吧。一.GET传参二.POST...
    99+
    2023-06-29
  • postman测试接口各种类型传值的实现
    目录一.GET传参二.POST传参三.Header四.下载文件一.GET传参 二.POST传参 1. application/x-www-form-urlencoded格式 2....
    99+
    2024-04-02
  • 详解Django+Vue+Docker搭建接口测试平台实战
    一. 开头说两句 大家好,我叫林宗霖,是一位测试工程师,也是全栈测开训练营中的一名学员。 在跟着训练营学习完Docker容器技术系列的课程后,理所应当需要通过实操来进行熟悉巩固。正好...
    99+
    2024-04-02
  • springboot多文件上传实现使用postman测试多文件上传接口
    使用postman测试多文件上传接口 1、创建测试类(FileController.java) package com.jeff.controller; import java....
    99+
    2024-04-02
  • pytest接口自动化测试框架搭建的全过程
    目录一. 背景二. 基础环境三. 项目结构四、框架解析4.1 接口数据文件处理4.2 封装测试工具类4.3 测试用例代码编写4.4 测试用例运行生成报告 ​​​​​​​总结一. 背景...
    99+
    2024-04-02
  • springboot多文件上传如何实现使用postman测试多文件上传接口
    这篇文章给大家分享的是有关springboot多文件上传如何实现使用postman测试多文件上传接口的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用postman测试多文件上传接口1、创建测试类(FileCon...
    99+
    2023-06-20
  • Golang实现单元测试中的接口层
    目录环境代码base case单元测试工具方法单元测试问题优化点总结上次我们已经搞定了逻辑层的单元测试,这次我们来康康接口层的单元测试。接口层主要负责的就是请求的处理,最常见的就是 ...
    99+
    2023-03-11
    Golang单元测试 接口层 Golang单元测试 Golang接口层
  • 关于python实现requests接口测试的问题
    requests接口测试的介绍 requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests是Python语言的第三方的...
    99+
    2024-04-02
  • 使用Python快速搭建接口自动化测试脚本实战总结
    ​测试需求介绍通常,在我们的项目中,我们的接口测试需求一般都是构造不同的请求数据,然后发送请求到接口,拿到接口返回后,对返回的字段进行提取和校验,最后将结果存放在excel表格中方便查阅。接口一般是http或https请求,发送的结构一般是...
    99+
    2023-05-14
    数据 Python 自动化测试
  • Golang如何实现单元测试中的接口层
    这篇文章主要介绍“Golang如何实现单元测试中的接口层”,在日常操作中,相信很多人在Golang如何实现单元测试中的接口层问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang如何实现单元测试中的接口层...
    99+
    2023-07-05
  • Pytest接口自动化测试框架搭建模板的示例分析
    小编给大家分享一下Pytest接口自动化测试框架搭建模板的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!auto_api_test开发环境: Pychar...
    99+
    2023-06-14
  • 5分钟搭建SpringCloud Eureka服务注册中心的实现
    创建父级项目 只需保留pom.xml文件 这里只需搭建一个微服务 其他操作并无 <?xml version="1.0" encoding="UTF-8"?...
    99+
    2024-04-02
  • 使用JMeter进行接口高并发测试的实现
    目录官网启动操作步骤一般的网络接口测试,功能性测试postman较为好用,需要测试高并发的情况下,可以用Jmeter来进行测试,postman是串行,而Jmeter可以多线程并行测试...
    99+
    2024-04-02
  • springboot vue接口测试定义编辑功能的实现
    目录基于springboot+vue 的测试平台开发一、后端1. 查询接口2. 更新接口二、前端1. 实现编辑外显2. 实现接口更新基于springboot+vue 的测试平台开发 ...
    99+
    2024-04-02
  • Pytest+Yaml+Excel 接口自动化测试框架的实现示例
    目录一、框架架构二、项目目录结构三、框架功能说明四、核心逻辑说明配置文件输出目录请求工具类代码编写case程序主入口执行记录一、框架架构 二、项目目录结构 三、框架功能说明 解决...
    99+
    2024-04-02
  • Jmeter的接口测试详细步骤并实现业务闭环
    目录一、首先是了解Jmeter接口测试用到的组件二、详细流程一、首先是了解Jmeter接口测试用到的组件 1、测试计划:Jmeter的起点和容器2、线程组:代表一定的虚拟用户3、取样...
    99+
    2024-04-02
  • DevOps on DevCloud|如何实现应用接口的混合驱动测试
    引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力。华为云DevCloud将推出“DevOps on DevCl...
    99+
    2023-06-04
  • 怎么用Python实现数据驱动的接口自动化测试
    这篇文章主要讲解了“怎么用Python实现数据驱动的接口自动化测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现数据驱动的接口自动化测试”吧!在接口测试的过程中,很多时...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作