风骏时光少年头像

Flask+SQLite实现用户管理接口

用户管理模块接口开发

用户管理是后端系统的核心模块之一,涉及用户注册、登录、信息查询、更新与删除等基础能力。本文以一个基于 Python Flask + SQLite 的轻量实现为例,演示用户模块的接口设计与开发要点,代码可直接运行。

一、环境准备

安装依赖:

pip install flask flask-cors

创建项目结构:

user_api/
├── app.py          # 主入口
├── db.py           # 数据库操作
└── requirements.txt

二、数据库设计

db.py 负责建表与连接管理。用户表包含 id、username、password、email、created_at 字段。

import sqlite3

def get_conn():
    conn = sqlite3.connect('user.db')
    conn.row_factory = sqlite3.Row
    return conn

def init_db():
    conn = get_conn()
    conn.execute('''
        CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            username TEXT UNIQUE NOT NULL,
            password TEXT NOT NULL,
            email TEXT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )
    ''')
    conn.commit()
    conn.close()

三、接口实现

1. 用户注册

from flask import Flask, request, jsonify
from werkzeug.security import generate_password_hash

app = Flask(__name__)

@app.route('/api/users/register', methods=['POST'])
def register():
    data = request.get_json()
    username = data.get('username')
    password = data.get('password')
    if not username or not password:
        return jsonify({'code': 400, 'msg': '用户名或密码不能为空'}), 400

    conn = get_conn()
    if conn.execute('SELECT id FROM users WHERE username=?', (username,)).fetchone():
        conn.close()
        return jsonify({'code': 400, 'msg': '用户名已存在'}), 400

    hashed = generate_password_hash(password)
    conn.execute('INSERT INTO users (username, password) VALUES (?,?)', (username, hashed))
    conn.commit()
    conn.close()
    return jsonify({'code': 200, 'msg': '注册成功'}), 200

2. 用户登录

from werkzeug.security import check_password_hash

@app.route('/api/users/login', methods=['POST'])
def login():
    data = request.get_json()
    conn = get_conn()
    row = conn.execute('SELECT * FROM users WHERE username=?',
                       (data.get('username'),)).fetchone()
    conn.close()
    if row and check_password_hash(row['password'], data.get('password')):
        return jsonify({'code': 200, 'msg': '登录成功', 'user_id': row['id']})
    return jsonify({'code': 401, 'msg': '用户名或密码错误'}), 401

3. 查询与更新用户

@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    conn = get_conn()
    row = conn.execute('SELECT id, username, email, created_at FROM users WHERE id=?',
                       (user_id,)).fetchone()
    conn.close()
    if not row:
        return jsonify({'code': 404, 'msg': '用户不存在'}), 404
    return jsonify({'code': 200, 'data': dict(row)})

@app.route('/api/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    data = request.get_json()
    conn = get_conn()
    conn.execute('UPDATE users SET email=? WHERE id=?', (data.get('email'), user_id))
    conn.commit()
    conn.close()
    return jsonify({'code': 200, 'msg': '更新成功'})

四、启动与测试

if __name__ == '__main__':
    init_db()
    app.run(host='0.0.0.0', port=5000, debug=True)

用 curl 验证:

curl -X POST [http://localhost:5000/api/users/register](http://localhost:5000/api/users/register) \
  -H "Content-Type: application/json" \
  -d '{"username":"alice","password":"123456"}'

五、小结

本示例实现了用户模块的增查改核心接口,并采用密码哈希存储保障安全。生产环境中可进一步接入 JWT 鉴权、参数校验框架、统一异常处理与日志监控,提升接口的健壮性与可维护性。

海量精选技术文档和实战案例持续更新,敬请关注【风骏时光少年】

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/m0_55877125/article/details/167919543

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--