题目
设计电商系统的商品展示功能
信息
- 类型:问答
- 难度:⭐
考点
数据库设计, RESTful API设计, 前后端数据交互
快速回答
设计电商商品展示功能的核心要点:
- 数据库设计:创建商品表包含基础字段(ID、名称、价格、描述等)
- API设计:使用RESTful风格设计获取商品列表的GET接口
- 数据交互:返回JSON格式数据,包含商品数组和分页信息
- 错误处理:定义统一的错误响应格式
1. 原理说明
商品展示是电商系统的基础功能,核心流程:前端请求 → 后端处理 → 数据库查询 → 返回结构化数据。需关注:
- 数据库设计:合理规划商品表字段和索引
- API设计规范:遵循RESTful原则设计资源端点
- 性能考量:基础分页防止全表扫描
2. 数据库设计示例(MySQL)
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10,2) NOT NULL,
description TEXT,
stock INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);字段说明:
id:主键(唯一标识)price:精确到小数点后两位的金额stock:库存量(默认0)created_at:自动记录创建时间
3. RESTful API实现(Python Flask示例)
from flask import Flask, jsonify
app = Flask(__name__)
# 商品列表接口
@app.route('/api/products', methods=['GET'])
def get_products():
page = request.args.get('page', 1, type=int)
per_page = 10 # 每页数量
# 模拟数据库查询(实际需替换为真实查询)
products = [
{"id": 1, "name": "T恤", "price": 99.9},
{"id": 2, "name": "运动鞋", "price": 299.0}
]
return jsonify({
"data": products,
"pagination": {
"page": page,
"per_page": per_page,
"total_items": len(products)
}
})
# 统一错误处理
@app.errorhandler(404)
def not_found(error):
return jsonify({"error": "Resource not found"}), 404
if __name__ == '__main__':
app.run()4. 最佳实践
- 分页机制:使用
page和per_page参数避免全量数据返回 - 响应格式:统一包含
data和pagination字段 - API版本控制:URL中加入版本号(如
/api/v1/products) - 安全防护:对输入参数进行类型校验和范围限制
5. 常见错误
- 全表查询:未实现分页导致数据库压力过大
- 敏感信息泄露:返回不必要的字段(如成本价、供应商信息)
- 不一致的响应格式:成功/失败返回结构不统一
- 缺乏错误处理:未处理数据库查询异常等边界情况
6. 扩展知识
- 缓存优化:对频繁访问的商品数据使用Redis缓存
- API文档:使用Swagger生成接口文档
- 前端整合:Vue/React通过axios调用接口示例:
axios.get('/api/products?page=2') .then(response => { console.log(response.data); });