用户管理模块接口开发
用户管理是后端系统的核心模块之一,涉及用户注册、登录、信息查询、更新与删除等基础能力。本文以一个基于 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 鉴权、参数校验框架、统一异常处理与日志监控,提升接口的健壮性与可维护性。
海量精选技术文档和实战案例持续更新,敬请关注【风骏时光少年】