最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js+postman+mongodb搭建測試注冊接口的實現(xiàn)

 更新時間:2022年06月14日 10:43:12   作者:GottdesKrieges  
本文主要介紹了node.js+postman+mongodb搭建測試注冊接口的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

準(zhǔn)備工作

申請一個免費(fèi)的MongoDB

https://www.mlab.com注冊申請一個500M的MongoDB數(shù)據(jù)庫。登錄后手動在創(chuàng)建Databases下的Collections中手動創(chuàng)建一個數(shù)據(jù)庫node_app。

在個人首頁點擊Connect獲取node.js連接MongoDB數(shù)據(jù)庫的字符串為

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

將其中<username>:<password>修改為自己設(shè)定的數(shù)據(jù)庫用戶名和密碼。

下載安裝Postman

https://www.postman.com/注冊一個賬號,下載安裝Postman agent,即可方便地進(jìn)行GET/POST/PUT等測試。

mongodb連接串配置

安裝mongoose用于連接數(shù)據(jù)庫:

> 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}`);
})

檢查是否能連接到數(shù)據(jù)庫:

> 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.

數(shù)據(jù)庫連接正常。

GET請求測試

創(chuàng)建路由文件

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,導(dǎo)入并使用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));

// 設(shè)置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!"}

注冊接口搭建

創(chuàng)建User數(shù)據(jù)模型

創(chuàng)建用戶數(shù)據(jù)模型文件

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

編輯User.js創(chuàng)建用戶數(shù)據(jù)模型:

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();

/*
?* $route GET /api/users/test
?* @desc return requested json data
?* @access public
?*/
router.get("/test", (req,res) => {
? ? res.json({msg:"Login succeeded!"})
})

/*
?* $route POST /api/users/register
?* @desc return requested json data
?* @access public
?*/
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中填入測試內(nèi)容:

KEY         VALUE
email    harlie@google.com

查看終端輸出:

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

說明成功獲取到了req.body。

使用User數(shù)據(jù)模型

首先安裝bcrypt包。bcrypt可以用來加密注冊用戶的密碼,避免在數(shù)據(jù)庫中存儲明文密碼。在https://www.npmjs.com/上可以查看bcrypt包的用法介紹。

> npm install bcrypt

編輯users.js引入并使用User數(shù)據(jù)模型:

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

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

/*
?* $route GET /api/users/test
?* @desc return requested json data
?* @access public
?*/
router.get("/test", (req,res) => {
? ? res.json({msg:"Login succeeded!"})
})

/*
?* $route POST /api/users/register
?* @desc return requested json data
?* @access public
?*/
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中填入測試內(nèi)容:

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中查看,會發(fā)現(xiàn)多出了一個users的Collection,其中剛好存儲了上面我們剛通過POST請求插入的一條數(shù)據(jù)。

使用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");

/*
?* $route GET /api/users/test
?* @desc return requested json data
?* @access public
?*/
router.get("/test", (req,res) => {
? ? res.json({msg:"Login succeeded!"})
})

/*
?* $route POST /api/users/register
?* @desc return requested json data
?* @access public
?*/
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中填入測試內(nèi)容:

email ? ? godfrey@eldenring.com
name ? ? ?godfrey
password ?123456

測試會返回報錯

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

在KEY和VALUE中填入測試內(nèi)容:

email      mohg@eldenring.com
name       mohg
password   123456

測試返回

{
    "name": "mohg",
    "email": "mohg@eldenring.com",
    "password": "$2b$10$uSV2tmA5jH6veLTz1Lt5g.iD5QKtbJFXwGsJilDMxIqw7dZefpDz.",
    "avatar": "http://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

到此這篇關(guān)于node.js+postman+mongodb搭建測試注冊接口的實現(xiàn)的文章就介紹到這了,更多相關(guān)node postman mongodb注冊接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Node.js實現(xiàn)一個文章生成器

    使用Node.js實現(xiàn)一個文章生成器

    本文將從零開始,講解如何使用Node.js來實現(xiàn)一個文章生成器,node里面有很多優(yōu)秀的模塊,現(xiàn)在我們就借助node的fs模塊來操控文本,來實現(xiàn)我們想要的效果,感興趣的小伙伴跟著小編一起來看看吧
    2024-07-07
  • Windows下安裝Bun像Node或Deno的現(xiàn)代JS運(yùn)行時

    Windows下安裝Bun像Node或Deno的現(xiàn)代JS運(yùn)行時

    這篇文章主要為大家介紹了一款像Node或Deno的現(xiàn)代JavaScript運(yùn)行時的bun在Windows下安裝過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Nodejs高并發(fā)原理示例詳解

    Nodejs高并發(fā)原理示例詳解

    這篇文章主要為大家介紹了Nodejs高并發(fā)原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 如何用nodejs給C#寫一個數(shù)據(jù)表的實體類生成工具

    如何用nodejs給C#寫一個數(shù)據(jù)表的實體類生成工具

    這篇文章主要介紹了如何用nodejs給C#寫一個數(shù)據(jù)表的實體類生成工具,對nodejs感興趣的同學(xué),可以參考下
    2021-05-05
  • 詳解Node.js服務(wù)器靜態(tài)資源處理

    詳解Node.js服務(wù)器靜態(tài)資源處理

    靜態(tài)資源服務(wù)器指的是不會被服務(wù)器的動態(tài)運(yùn)行所改變或者生成的文件,本文主要為大家詳細(xì)介紹了Node.js服務(wù)器靜態(tài)資源處理的相關(guān)知識,需要的可以了解下
    2024-04-04
  • 前端如何更好的展示后端返回的十萬條數(shù)據(jù)

    前端如何更好的展示后端返回的十萬條數(shù)據(jù)

    這篇文章主要為大家介紹了前端如何更好的展示后端返回的十萬條數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • node學(xué)習(xí)記錄之搭建web服務(wù)器教程

    node學(xué)習(xí)記錄之搭建web服務(wù)器教程

    本篇文章主要介紹了詳解node學(xué)習(xí)記錄——搭建web服務(wù)器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 淺析Node.js非對稱加密方法

    淺析Node.js非對稱加密方法

    本篇文章主要給大家分享了Node.js非對稱加密方法以及代碼實例講解,對此有興趣的朋友參考學(xué)習(xí)下吧。
    2018-01-01
  • express提供http服務(wù)功能實現(xiàn)示例

    express提供http服務(wù)功能實現(xiàn)示例

    這篇文章主要為大家介紹了express提供http服務(wù)功能實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Node.js+Express+Vue+MySQL+axios的項目搭建全過程

    Node.js+Express+Vue+MySQL+axios的項目搭建全過程

    這篇文章主要介紹了Node.js+Express+Vue+MySQL+axios的項目搭建全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

萝北县| 临泉县| 和林格尔县| 阿瓦提县| 会昌县| 利津县| 大同县| 宁夏| 错那县| 眉山市| 竹北市| 陆良县| 防城港市| 垣曲县| 穆棱市| 密山市| 佳木斯市| 牡丹江市| 双鸭山市| 天镇县| 兴义市| 益阳市| 方正县| 姜堰市| 忻州市| 兴文县| 蚌埠市| 大理市| 铜陵市| 中江县| 利川市| 高要市| 玉屏| 通海县| 镇雄县| 苏尼特左旗| 兴化市| 筠连县| 高邑县| 华阴市| 烟台市|