# DP_Library_API **Repository Path**: ao_wu/DP_Library_API ## Basic Information - **Project Name**: DP_Library_API - **Description**: DP-Library后端部分 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-05-27 - **Last Updated**: 2021-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DP-Library后端部分 ## 基于Vue3.0+Eelement-Plus+FastAPI+MongoDB的前后端分离的图书管理项目「后端部分」 - 新手指南已收起,不展示在首页了,影响阅读[指南传送门🚪](https://gitee.com/ao_wu/DP_Library_API/tree/master/guide) ### 关于消息中间件 - [RabbitMQ+Celery相关资料](https://blog.csdn.net/qq407388356/article/details/81431785) - RabbitMQ - ![rabbitmq.png](https://tva1.sinaimg.cn/large/007e6d0Xgy1gr40seu23vj30ku0bhgra.jpg) - Celery - ![celery.jpg](https://tva1.sinaimg.cn/large/007e6d0Xgy1gr40tmditfj30l20dsq53.jpg) - [Python Celery和RabbitMQ实战教程](https://blog.csdn.net/qiulin_wu/article/details/106119757?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase) - ![pic.png](https://tva1.sinaimg.cn/large/007e6d0Xgy1gr413eo0iwj30zo0mwwry.jpg) - [FastAPI & Celery](https://zhuanlan.zhihu.com/p/144295225) ### 关于定时任务 - [FastAPI定时任务](https://www.icode9.com/content-4-798680.html) ## 项目简要说明 - `main.py` 主要代码文件,API接口都写在里面❌「不在了,已经分散到对应文件夹了」 - `models.py` 实体类模型,因为MongoDB的数据结构,需要为其定制特殊的实体类「说实话还没搞太懂」 - `dbtest.py` 用于数据库连接检测,直接运行该文件,输出系统内全部数据库「如下图」则说明连接成功 ![image.png](https://tva1.sinaimg.cn/large/007e6d0Xgy1gqw388oixdj60bu02lgll02.jpg) ## 特色功能 - FastAPI会自动生成接口文档,可以直接测试接口,这个功能绝了👍 - 进入方式:在启动的地址后面加上 `/docs` - ![image.png](https://tva1.sinaimg.cn/large/007e6d0Xgy1gqw3fkgh1gj60p10fl0tt02.jpg) ## 更多资料 ### 接口权鉴方面「可能要做身份权鉴 🥲」 - [「关于OAuth2」](https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html) - [「关于Bearer Token」](https://www.jianshu.com/p/8f7009456abc) - [「官方文档中OAuth2的实现」](https://fastapi.tiangolo.com/zh/tutorial/security/simple-oauth2/) - [「网友在FastAPI中OAuth2的实现」](https://github.com/MarkShawn2020/oauth2-py) ### 数据库设计方面 - [「范式与反范式」](https://blog.csdn.net/lein_wang/article/details/53064791) - [「MongoDB模式设计」](https://mongoing.com/mongodb-advanced-pattern-design) - [「关系模型和文档模型的区别在哪里?」](https://mongoing.com/mongodb-advanced-pattern-design) - 关系模型需要你把一个数据对象,拆分成零部件,然后存到各个相应的表里,需要的是最后把它拼起来。举例子来说,假设我们要做一个CRM应用,那么要管理客户的基本信息,包括客户名字、地址、电话等。由于每个客户可能有多个电话,那么按照第三范式,我们会把电话号码用单独的一个表来存储,并在显示客户信息的时候通过关联把需要的信息取回来。 而MongoDB的文档模式,与这个模式大不相同。由于我们的存储单位是一个文档,可以支持数组和嵌套文档,所以很多时候你直接用一个这样的文档就可以涵盖这个客户相关的所有个人信息。关系型数据库的关联功能不一定就是它的优势,而是它能够工作的必要条件。 而在MongoDB里面,利用富文档的性质,很多时候,关联是个伪需求,可以通过合理建模来避免做关联。 - [「MongoDB设计方法以及技巧示例详解」](https://www.jb51.net/article/189516.htm) - [「50个关于MongoDB模型设计的技巧」](https://segmentfault.com/a/1190000016937778) - MongoDB应该是一个庞大而笨重的数据存储。也就是说,它几乎不进行任何处理,只是存储和检索数据。您应该尊重这一目标并尽量避免强制MongoDB执行可在客户端上执行的任何计算。即使是“微不足道的”任务,例如寻找平均值或求和字段,通常也应该推送给客户端进行。 ### MongoDB时间存储 - [「Python中实现对Timestamp和Datetime及UTC时间之间的转换」](https://www.jb51.net/article/63654.htm) ## 开发规范 - 接口说明要写清楚 - 各接口需要层级分明,满足高内聚、低耦合的要求