第三方模块vscode代码提示:https://www.npmjs.com/search?q=%40types

起头

第一步:初始化npm

第二步:下载需要的第三方模块,列如express,mysql

第三步:封装导出函数

  1. 加载mysql模块( 可以去npm或github搜索’mysql’,找到mysql模块,去文档中复制)
  2. 创建连接对象(只填写参数,还未连接到MySQL服务器)
    服务器地址-> 用户名->密码->数据库名称
  3. 连接(连接到MySQL服务器)
  4. 执行SQL语句
  5. 关闭连接

第四步:搭建服务器,写接口

  1. 加载express模块**(const express = require(‘express’);)**
  2. 创建app对象(const app = express();
  3. 指定端口,启动服务(app.listen(3000, () => console.log(‘启动了服务器’));
  4. 写接口
    有get和post方式
    end() 方法,要求只能响应字符串;还要设置响应头
    res.setHeader(‘Content-Type’, ‘application/json; charset=utf-8’);
    res.end(JSON.stringify({ status: 0, message: ‘哈哈哈’ }));
    send方法会把对象转成JSON;send方法也会自动设置响应头
    app.get(‘网址别名’, (req, res) => {
    res.send({ status: 0, message: ‘hahaha’ })
    })
  5. nodemon发出请求启动服务器
  6. 打开Apipost测试请求
    新建接口–>请求方式–>输入地址

注册接口

第一步:去Apipost写请求方式与接口地址 : /api/reguser

第二步:在body写函数体写入usernamepassword参数(注意右上角内容格式选择最长的application/x-www-form-urlencoded

第三部:在代码里配置,接收POST请求的请求体(参数)

app.use(express.urlencoded({ extended: true }));

第五步:在接口里面。作为服务器,接收客户端提交的username和password

console.log(req.body);

let { username, password } = req.body

就是上面let username = obj.username;和 let password = obj.password;

第六步:把username和password添加到user表中

let sql1 = `insert into user set username="${username}",password="${password}"`;
    db(sql1, (err, result) => {
        // 错误输出错误
        if (err) throw err;
        res.send({ status: 1, message: '成功了' })
    })

验证用户名是否存在

select * from user where username=’${username}'

一、加入判断条件

db(`select * from user where username='${username}'`, (e, y) => {
        if (e) throw e;
        console.log(y);
    })

二、错误之前结束,判断结果

结果的长度大于0说明已经存在提示用户名已存在

if (y.length > 0) {
            res.send({ status: 1, message: '用户名已存在' });
        }

否则添加新用户

else {
      // 如果没有被占用,把账号密码添加到数据库
            let sql1 = `insert into user set username="${username}",password="${password}"`;
            db(sql1, (err, result) => {
                if (err) throw err;
                res.send({ status: 1, message: '注册成功' })
            })
        }

密码加密

加密解密网站:https://www.cmd5.com/

自行查看加密:http://nodejs.cn/api/crypto.html

添加第三方模块加密:去https://www.npmjs.com/搜索 utility

第一步:在终端里添加utility(输入npm install utility

第二步:在顶部加载模块

const utils = require('utility');

第三步:在注册之前对密码进行md5加密处理

password = utils.md5(password);

登录接口

第一步:去Apipost写请求方式与接口地址: /api/login

第二步:在body写函数体写入usernamepassword参数(注意右上角内容格式选择最长的)

第三步:登录接口

app.post('/api/login', (req, res) => {
	// 检测
    console.log(req.body);
})

第四步:接收请求体

let { username, password } = req.body;

第五步: 验证密码是否匹配

因为是加密过的密码必须通过MD5解密才能用

password = md5(password);
 let sql1 = `select * from user where username="${username}" and password="${password}"`;

第六步:判断结果

db(sql1, (err, result) => {
        if (err) throw err;
        if (result.length > 0) {
            res.send({ status: 0, message: '登录成功' });
        } else {
            res.send({ status: 1, message: '账号或密码错误' });
        }
    })

完整代码

注意个别数据是前面设置好了

app.post('/api/login', (req, res) => {
    // 检测
    // console.log(req.body);
    let { username, password } = req.body;
    // 验证密码是否匹配
    password = md5(password);
    let sql1 = `select * from user where username="${username}" and password="${password}"`;
    db(sql1, (err, result) => {
        if (err) throw err;
        if (result.length > 0) {
            res.send({ status: 0, message: '登录成功' });
        } else {
            res.send({ status: 1, message: '账号或密码错误' });
        }
    })
})

创建token

第一步:下载第三方模板 npm i jsonwebtoken

第二步:加载模块

const jwt = require('jsonwebtoken');

第三步:在登录成功里创建token(谁登录,就把谁的id保存到token中)

可百度查找https://www.npmjs.com/package/jsonwebtoken

//              sign(对象(要保存的数据),字符串(加密解密),有效期)
  let token = jwt.sign({ id: 'bar' }, 'shhhhh', { expiresIn: '2h' });

第三步:修改token

let token = jwt.sign({ id: 'result[0].id' }, 'shhhhh', { expiresIn: '2h' });

第四步:给登录成功加上token

res.send({ status: 0, message: '登录成功', token: token });

第五步:添加Bearer认证

res.send({ status: 0, message: '登录成功', token: 'Bearer ' + token });

路由接口

第一步:加载express

const express = require('express');

第二步:创建路由对象(实际得到一个函数)

const router = express.Router();

第三步:将接口挂载到路由对象

router.post('/login', (req, res) => {})

第四步:导出router

module.exports = router;

第五步:去需要的代码页加载路由模块

let login = require('./routers/login');

第六步: 注册为中间件

app.use('/api', login);

细节

第一:注册为中间件有地址要将接口挂载到路由的地址多出的删除

第二:将需要的模块放到需要的地方加载