安装中间件 koa2-cors
cors跨域资源共享是一种机制,用来允许不同源服务器上的指定资源可以被特定的Web应用访问。
cors 安装
npm install koa-cors --save
cors 使用
//app.js const Cors = require('koa2-cors') app.use(Cors())
koa连接数据库(mysql)
需要安装sql依赖;
npm install mysql --save
SQL配置
新建一个 sql文件夹,主要用于存放sql的各种操作;
sql/config.js const mysqlConfig = { user: "Koa", //账号 password: "Koa", //密码 database: "Koa", //数据库 host: "122.112.172.87", //服务器地址 port: 3306, //数据库端口 timezone: '08:00' }; module.exports = mysqlConfig;
koa封装sql数据库query函数
//sql/query.js const mysql = require("mysql"); const config = require("./config"); //创建连接池 const pool = mysql.createPool(config); const query = (sql, val) => { return new Promise((resolve, reject) => { pool.getConnection(function (err, connection) { if (err) { reject(err); } else { connection.query(sql, val, (err, fields) => { if (err) { reject(err); } else { resolve(fields); } connection.release(); }); } }); }); }; module.exports = { query };
新增接口 - 用户信息注册 和 登录
新建两个文件夹 controller 和 model
controller主要存放操作和数据处理的一些逻辑
// controller/userController.js // 用户注册 const User = require('../model/userModel') class UserController { // 用户注册 async register(ctx) { let { name, tel, password } = ctx.request.body const names = await User.getUser(name) //用户名是否重复 const tels = await User.getTel(tel) //手机号是否重复 if (tels.length > 0) { ctx.body = { type: 'warning', message: '该手机号已注册' } } else { if (names.length > 0) { ctx.body = { type: 'error', message: '用户名已存在' } } else { await User.insert(name, tel, password) ctx.body = { type: 'success', code: 0, message: '注册成功' } } } } // 登录 async login(ctx) { let tel = ctx.request.body.tel let password = ctx.request.body.password const res = (await User.getTel(tel))[0] if (res) { if (res.password == password) { ctx.body = { code: 0, data: { name: res.name, tel: res.tel }, message: '登录成功', type: 'success' } } else { ctx.body = { type: 'error', message: '用户名或密码不正确' } } } else { ctx.body = { type: 'error', message: '用户名不存在' } } } } module.exports = new UserController()
model中操作数据库的函数(包含数据库语句)
// model/userModel.js const query = require('../sql/query') class UserModel { //获取用户 async getUser(name) { return await query(`SELECT * FROM user WHERE name = '${name}'`) } //获取用户手机号 async getTel(tel) { return await query(`SELECT * FROM user WHERE tel = '${tel}'`) } //用户注册 async insert(name, tel, password) { return await query(`INSERT INTO user(name, tel, password) VALUES('${name}', '${tel}', '${password}')`) } } module.exports = new UserModel()
在router路由文件里面注册
//router/index.js const Router = require('koa-router') const router = new Router() //用户 const UserController = require('../controller/UserController') //用户注册 router.post('/register', UserController.register) //用户信息登录 router.post('/login', UserController.login) module.exports = router
接口调用
使用post请求就可以调用 /register 和 /login两个接口啦;当然也可以再封装其他更多的接口。
结尾
到此 用户的注册和登录接口就写完了。后续继续其他功能添加。有兴趣的可以查看源码 源码地址,一起学习,一起加油。我是叫我詹躲躲,很高兴认识你。