(四)Node接口搭建——搭建注册接口并存储数据

2019-07-08  本文已影响0人  彼得朱

本节有两个内容:

1、本地测试接口的工具—postman

官网:https://www.getpostman.com/

建议用这个:https://www.getpostman.com/apps 不再依赖于Chrome浏览器了

然后一步一步安装就好,安装完成之后可以测试一下我们之前写的接口,也可以测试别人的接口


postman测试

2、搭建注册(register)接口

注意:body-parserExpress 一个常用中间件,作用是对post请求的请求体进行解析。使用非常简单,以下两行代码已经覆盖了大部分的使用场景。

app.use(bodyParser.json());

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

bodyParser.urlencoded 用来解析 request 中 body的 urlencoded字符, 只支持utf-8的编码的字符,也支持自动的解析gzip和 zlib。返回的对象是一个键值对,当extended为false的时候,键值对中的值就为'String'或'Array'形式,为true的时候,则可为任何数据类型。

Bcrypt:bcrypt是一种跨平台的文件加密工具,比较方便地实现数据的加密工作。

步骤:

npm install body-parser

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

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

app.use(bodyParser.json());

// $route POST api/users/register
// @desc 返回的请求json数据
// @access public
router.post("/register",(req,res)=>{
    console.log(req.body);
})
测试接口
终端输出

说明接口成功。

npm install bcrypt

const bcrypt = require("bcrypt"); //引入加密

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

router.post("/register", (req, res) => {
    // console.log(req.body);
    // 查询数据库中是否拥有邮箱
    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
                })
                //密码加密  需npm install bcrypt
                bcrypt.genSalt(10, function (err, salt) {
                    bcrypt.hash(newUser.password, salt, function (err, hash) {
                        //store hash in your password DB.
                        if (err) {
                            throw err;
                        }
                        newUser.password = hash;
                        newUser.save()
                            .then(user => res.json(user))
                            .catch(err => console.log(err));
                    });
                });
            }
        })

})
测试
测试
上一篇下一篇

猜你喜欢

热点阅读