自学内容网 自学内容网

express,MySQL 实现登录接口

使用 Express 和 MySQL 实现一个登录接口涉及几个步骤,包括设置 Express 服务器、连接 MySQL 数据库、创建用户表(如果还没有)、编写登录接口的逻辑等。以下是一个简单的实现示例:

1. 设置项目

首先,创建一个新的项目文件夹并初始化一个新的 Node.js 项目:

mkdir login-api
cd login-api
npm init -y

2. 安装依赖

安装 Express 和 MySQL 相关的依赖:

npm install express mysql2 body-parser

3. 创建数据库和用户表

确保你的 MySQL 数据库已经启动,并创建一个数据库(例如 login_db)和用户表(例如 users)。

CREATE DATABASE login_db;

USE login_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL -- 注意:实际项目中应使用哈希密码
);

4. 编写服务器代码

在项目文件夹中创建一个 server.js 文件,并添加以下代码:

const express = require('express');
const mysql = require('mysql2');
const bodyParser = require('body-parser');

const app = express();
const port = 3000;

// 配置 MySQL 连接
const db = mysql.createConnection({
    host: 'localhost',
    user: 'root', // 根据实际情况修改
    password: 'your_password', // 根据实际情况修改
    database: 'login_db'
});

// 连接到数据库
db.connect((err) => {
    if (err) {
        throw err;
    }
    console.log('MySQL connected...');
});

// 使用 body-parser 中间件解析 JSON 请求体
app.use(bodyParser.json());

// 登录接口
app.post('/login', (req, res) => {
    const { username, password } = req.body;

    if (!username || !password) {
        return res.status(400).json({ message: 'Username and password are required' });
    }

    const query = 'SELECT * FROM users WHERE username = ?';
    db.query(query, [username], (err, results) => {
        if (err) {
            return res.status(500).json({ message: 'Internal server error' });
        }

        if (results.length === 0) {
            return res.status(401).json({ message: 'Invalid username or password' });
        }

        const user = results[0];

        // 注意:实际项目中应验证哈希密码
        if (user.password === password) {
            return res.status(200).json({ message: 'Login successful', user: { username: user.username } });
        } else {
            return res.status(401).json({ message: 'Invalid username or password' });
        }
    });
});

app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});

5. 启动服务器

在终端中运行以下命令启动服务器:

node server.js

6. 测试登录接口

你可以使用 Postman 或其他 API 测试工具来测试登录接口。发送一个 POST 请求到 http://localhost:3000/login,并在请求体中包含 JSON 格式的用户名和密码:

{
    "username": "your_username",
    "password": "your_password"
}

注意事项

  1. 密码存储:在实际项目中,不要以明文形式存储密码。应使用密码哈希(如 bcrypt)来存储和验证密码。
  2. 错误处理:应添加更多的错误处理逻辑,以确保代码的健壮性。
  3. SQL 注入:虽然此示例中使用了参数化查询来防止 SQL 注入,但在实际项目中应保持警惕,避免使用拼接字符串的方式来构建 SQL 查询。

希望这个示例能帮助你实现一个简单的登录接口!


原文地址:https://blog.csdn.net/xuelian3015/article/details/142676413

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!