用户管理模块接口开发

用户管理模块接口开发

用户管理是后端系统的核心模块之一,涉及用户注册、登录、信息查询、更新与删除等基础能力。本文以一个基于 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 鉴权、参数校验框架、统一异常处理与日志监控,提升接口的健壮性与可维护性。

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

相关推荐
彭亚川Allen1 小时前
从零手搓 RAG 之检索全流程,给大模型接上自己的知识库
前端·后端·ai编程
IT_陈寒1 小时前
别让Java字符串拼接偷偷吃掉你的内存
前端·人工智能·后端
软件技术NINI2 小时前
圣罗兰彩妆html+css 4页
前端·css·html
2601_951615202 小时前
网站模板 网站网页模板下载
前端·网络·html
酷炫码神3 小时前
Day 1|HTML5:一个商城首页的骨架,从 DOCTYPE 到语义化
前端·html·html5
AI源码3 小时前
鲜花商城(HTML 版)
前端·html
hiahiahia1234 小时前
Message 和对话
服务器·前端·数据库
溪语流沙4 小时前
【Web全栈进阶】Composition API与组件通信:props深入、emit、插槽
前端·css·vue.js
ZoeLandia4 小时前
TypeScript 03:泛型与工具类型
前端·typescript