一、初始化项目
1.使用makdir 文件夹名
创建一个文件夹
例如
makdir koa_start cd koa_start 然后执行 npm init
2.安装 koa、 koa-router、 koa-cors、 koa-bodyparser,mysql
npm install koa,koa-router, koa-cors,koa-bodyparse,mysql --save
koa-router是路由文件,koa-cors是后端跨域组价,koa-bodyparse是post传值接受的中间键
2.新建app.js
// server.js文件 let Koa = require("koa"); let Router = require("koa-router"); let cors = require("koa-cors"); const bodyParser = require("koa-bodyparser"); let fs = require("fs"); const app = new Koa(); app.use(bodyParser()); const router = new Router(); const db = require("./mysqlDB"); router.post("/user/login", async (ctx,next) => { let ctx_query = ctx.request.body; let sql = `select * from users where user='${ctx_query.username}' and passwd='${ctx_query.password}'`; const result = await db.query(sql); //查询数据库 if (result.status == 200) { if(result.results.length>0){ ctx.body = { code: 200, token: "7987asdjabsdqweqwesdqwewqe", }; }else{ ctx.body = { code: 400, message: "用户名和密码错误,请重新输入", }; } } else if (result.status == 400) { ctx.body = { code: 401, message: "连接错误,请重新再试", }; }else{ ctx.body = { code: 500, message: "服务器连接失败", }; } }); app.use(cors()); // 将koa和两个中间件连起来 app.use(router.routes()).use(router.allowedMethods()); // 监听3001端口 app.listen(3001,()=>{ console.log('server is alerday start') });
app.use(bodyParser());是为了在post请求中转化得到请求参数的 所以post得到前端请求的参数为 let ctx_query = ctx.request.body; get得到请求的参数为let ctx_query = ctx.query;
3.新建dbconfig.js数据库的配置
dbconfig.js module.exports = { config: { db_host: "localhost", --主机名 db_port: "3306", --主机端口 db_name: "test", --数据库名 db_user: "root", --数据库登录名 db_passwd: "root" --数据库连接密码 }, };
4.新建mysqlDB数据库连接文件
mysqlDB.js const mysqlDb = require("mysql"); const config = require("./dbconfig"); let options = { host: config.config.db_host, user: config.config.db_user, password: config.config.db_passwd, database: config.config.db_name, multipleStatements: true, }; var pool = mysqlDb.createPool(options); exports.query = function (sql, values) { return new Promise((resolve, reject) => { pool.getConnection(function (err, connection) { if (err) { reject(err) //console.log(err, "数据库连接失败"); resolve({ status: 500, }); } else { //console.log("数据库连接成功"); connection.query(sql, values, (err, results) => { if (err) { reject(err); resolve({ status: 400 }); } else { connection.release(); resolve({ status: 200, results, }); } //connection.release() // 释放连接池 }); } }) }) }
5、启动项目
package.json里面配置
{ "name": "koa-demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node ./app.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "koa": "^2.13.1", "koa-bodyparser": "^4.3.0", "koa-cors": "0.0.16", "koa-router": "^10.0.0", "mysql": "^2.18.1", "save": "^2.4.0" } }
npm run start启动项目
然后在浏览器是上监听3001端口,服务器就启动了