第三方模块vscode代码提示:https://www.npmjs.com/search?q=%40types
起头
第一步:初始化npm
第二步:下载需要的第三方模块,列如express,mysql
第三步:封装导出函数
- 加载mysql模块( 可以去npm或github搜索’mysql’,找到mysql模块,去文档中复制)
- 创建连接对象(只填写参数,还未连接到MySQL服务器)
服务器地址-> 用户名->密码->数据库名称 - 连接(连接到MySQL服务器)
- 执行SQL语句
- 关闭连接
第四步:搭建服务器,写接口
- 加载express模块**(const express = require(‘express’);)**
- 创建app对象(const app = express();)
- 指定端口,启动服务(app.listen(3000, () => console.log(‘启动了服务器’));)
- 写接口
有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’ })
}) - nodemon发出请求启动服务器
- 打开Apipost测试请求
新建接口–>请求方式–>输入地址
注册接口
第一步:去Apipost写请求方式与接口地址 : /api/reguser
第二步:在body写函数体写入username与password参数(注意右上角内容格式选择最长的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写函数体写入username与password参数(注意右上角内容格式选择最长的)
第三步:登录接口
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);
细节
第一:注册为中间件有地址要将接口挂载到路由的地址多出的删除
第二:将需要的模块放到需要的地方加载