基于Koa2和MySQL的登录接口示例:
const Koa = require('koa');
const Router = require('koa-router');
const bodyParser = require('koa-bodyparser');
const mysql = require('mysql2/promise');
const app = new Koa();
const router = new Router();
const port = 3000;
// 创建数据库连接
const pool = mysql.createPool({
host: '127.0.0.1', // 数据库的 IP 地址
port: '3306', // 端口号,默认为 3306
user: 'root', // 账号
password: '123456', // 密码
database: 'ck-test-db' // 指定要操作哪个数据库
});
// 登录接口
router.post('/login', async (ctx) => {
const { username, password } = ctx.request.body;
// 检查用户名和密码是否存在
if (!username || !password) {
ctx.status = 400;
ctx.body = '用户名和密码不能为空';
return;
}
// 查询数据库中是否有匹配的用户
try {
const connection = await pool.getConnection();
const [rows] = await connection.query('SELECT * FROM users WHERE username = ? AND password = ?', [username, password]);
connection.release();
if (rows.length === 1) {
ctx.body = '登录成功';
} else {
ctx.status = 401;
ctx.body = '用户名或密码不正确';
}
} catch (error) {
ctx.status = 500;
ctx.body = '服务器错误';
console.error(error);
}
});
app.use(bodyParser());
app.use(router.routes());
app.listen(port, () => {
console.log(`服务器已启动,端口号:${port}`);
});
这个示例代码创建了一个Koa应用,监听在3000端口。在路由中定义了一个POST请求的/login接口,接收一个包含用户名和密码的请求体,并且在MySQL中查询是否有匹配的用户。
需要注意的是,这个示例中的代码使用了mysql2/promise包来创建数据库连接和执行查询操作。该包支持异步操作和Promise,更加符合Node.js的异步编程模式。如果你使用的是mysql包或其他类似的包,需要根据包的使用方式进行调整。