项目名称:校园旧书交易平台(微信小程序 + FastAPI 后端)
项目描述:
为解决高校教材浪费、学生购书成本高的问题,开发了校园旧书交易小程序。用户通过微信授权登录,可浏览、发布旧书信息,上传多张实物照片,按价格或专业筛选书籍。卖家可管理自己发布的商品,买家可查看联系方式(虚拟号)。
技术栈:
前端使用微信小程序原生框架,后端基于 FastAPI + SQLAlchemy Async + MySQL,图片存储采用本地静态目录映射,接口认证通过 openid 识别用户,无感登录。
核心职责:
设计数据库表(用户表、旧书表),字段包含 openid、头像、书籍标题、图片 URL 列表等,使用 JSON 类型存储多张图片路径。
实现异步 REST API:
POST /wx/login:调用微信 code2Session 获取 openid,判断新老用户并返回 token。
POST /register:接收用户昵称、性别、年级、专业及头像文件,校验 openid 唯一性,保存图片至 uploads/avatars/,生成访问 URL。
POST /api/books:接收 openid、书籍标题、描述、价格、多张图片,将图片存入 uploads/books/,记录相对路径到数据库。
GET /api/books:支持分页和按专业筛选。
解决图片上传的 422 错误:将 Pydantic 模型改为 Form + File 分离,确保前端 multipart/form-data 请求被正确解析。
使用 StaticFiles 挂载静态目录,使图片可通过 /static/... 直接访问,并优化了头像和书籍图片的命名规则(UUID 防重名)。
编写单元测试,使用 pytest-asyncio 模拟数据库会话,确保接口健壮性。
项目成果:
接口平均响应时间 < 100ms,支持 50+ 并发用户。
小程序已通过微信审核并上线校园内测,累计注册用户 200+,发布旧书 300 余册