用户管理模块接口开发

用户管理模块接口开发

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

一、环境准备

安装依赖:

复制代码
pip install flask flask-cors

创建项目结构:

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

二、数据库设计

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

python 复制代码
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. 用户注册

kotlin 复制代码
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. 用户登录

kotlin 复制代码
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. 查询与更新用户

less 复制代码
@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': '更新成功'})

四、启动与测试

ini 复制代码
if __name__ == '__main__':
    init_db()
    app.run(host='0.0.0.0', port=5000, debug=True)

用 curl 验证:

scss 复制代码
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 鉴权、参数校验框架、统一异常处理与日志监控,提升接口的健壮性与可维护性。

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

相关推荐
Csvn7 小时前
WASM
前端
修己xj9 小时前
我用 AI 给自己写了一个 Markdown 编辑器,然后把它开源了
前端
FRing039 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
幸运小猿9 小时前
模拟慢上传-处理超时重试image 丢失线上问题
前端·javascript·html
moshuying11 小时前
网购能买Token了!
前端
h_654321011 小时前
echarts实现柱状图加一条横线
前端·echarts
风骏时光牛马11 小时前
生成一个后端标题,只需要一个标题,不需要其他的任何文本。
前端
子非鱼@Itfuture11 小时前
关于前后端联调中登录状态/登录信息失效?
java·前端
郭小李11 小时前
openFeign入门
java·开发语言·前端
馒头不想说话11 小时前
AI当运营,帮你省人力
前端