本系统是图书管理场景的RESTful API后端服务,采用现代化的Web API架构,为前端应用(Web/移动端/小程序)提供标准化的数据接口。
核心功能模块:
1. 认证与授权:JWT Bearer Token认证机制,管理员登录后获取Token(有效期60分钟),受保护的资源操作(新增、修改、删除)需携带Token访问。密码采用MD5哈希存储,不保存明文。
2. 图书管理:提供完整的CRUD接口。支持分页查询(page/page_size参数)、关键词模糊搜索(匹配书名/作者/ISBN)、分类筛选。创建图书时自动校验ISBN唯一性,更新图书时自动重算可用库存(新
可用 = 原可用 + (新总数 - 原总数)),确保数据一致性。
3. 读者管理:读者信息查询、借阅历史追溯。通过/readers/{id}/borrows端点可查看指定读者的全部借阅记录及其状态(正常/逾期/已还)。
4. 统计分析:提供聚合统计接口,一次请求返回馆藏总数、读者总数、在借数量、逾期数量、可用库存、分类分布等关键指标,可直接用于仪表盘展示。
5. 自动文档:基于OpenAPI 3.0规范自动生成交互式Swagger UI文档(/docs)和ReDoc文档(/redoc),开发者可直接在浏览器中测试全部API端点。
技术架构:Python 3 + FastAPI + SQLite + JWT + Pydantic
1. FastAPI异步框架(核心选型):选择FastAPI而非Flask/Django,原因是它的性能接近Node.js/Go,且内置数据校验(Pydantic)、自动文档生成(OpenAPI/Swagger)、类型提示。路由采用装饰器
模式定义,代码简洁可读。
2. 数据校验层:使用Pydantic
BaseModel定义请求和响应模型。BookCreate模型要求title和author必填且长度1-200,total默认1且≥1。所有输入自动校验类型和约束,非法请求返回422错误和详细原因,无需手写校验逻辑。
3. SQLite持久化:使用WAL模式(Write-Ahead Logging)提升并发读写性能。通过外键约束(PRAGMA
foreign_keys=ON)保证引用完整性。数据库初始化时自动建表并插入8本图书+3位读者+3条借阅记录的示例数据,首次启动即可用。
4. JWT认证中间件:使用PyJWT库实现HS256签名。HTTPBearer依赖注入机制,受保护的路由只需声明username: str =
Depends(verify_token)即可完成鉴权。Token过期或无效时返回401和明确错误提示。
5. RESTful设计:严格遵循HTTP语义——GET查询、POST创建(返回201)、PUT全量更新、DELETE删除(返回204)。分页接口返回items + total + page + total_pages的标准化结构,前端可直接使用。
6. CORS与部署:通过CORSMiddleware允许跨域访问(开发阶段allow_origins=["*"]),生产环境可限制为特定域名。API首页(/)提供精美HTML文档页,包含curl示例、接口清单、技术栈说明。