点击python编程从入门到实践,置顶 公众号重磅 python入门资料,第一时间送达前端
读完须要4分钟python
速读仅需 2 分钟web
/ python 大型项目之自定义 fastapi 项目架构(完结) /面试
平时不管是聊技术仍是面试我想你们或多或少都会说,个人这个项目是基于 Django 框架开发的、基于 Tornado 框架开发的... 面试官也会问你这个项目是基于哪一个框架开发的呢?每次问到这个问题的时候你是否会停下来思考两秒为什么你们都会这样问在,这样说呢?用过多个 python web 框架的的同窗应该清楚:在使用 Django 这种框架的时候咱们是能够经过命令建立出一个项目的 项目中各个文件包含的内容也是有严格规定的,可是在使用相似于 flask、fastapi 的时候咱们在官网或者网上找一个例子就会发现启动一个项目就简简单单的一个 py 文件就能完成请求和响应内容,是太简单了么?不是的 这些轻量级的框架项目组织须要咱们本身来作,这里问题就来了,有些开发人员在规划的时候因为不合理而在后续开发、找问题... 等过程当中让人绝望。基于此我分享一份在开发中如何合理规划项目的案例供你们学习参考sql
注:这篇文章核心是介绍 python 轻量级项目组织相关的问题,本案例不是标准,只是在多年的开发过程当中总结的一套比较舒服、高效的组织代码的一种方式,只是单纯分享,不是强制。数据库
1编程
fastapi 整体项目结构flask
咱们大致把项目的目录结构划分为 5 个部分,分别为:app、docs、requirements、scripts、tests 。简单的介绍一下这几部分的核心功能:app:项目框架核心,作总体项目逻辑
docs:项目文档维护
requirements:维护项目的第三方安装包
scripts:对项目代码质量作检测的脚本
tests:测试案例
咱们先看一下总体的图示:api
2微信
fastapi 各个部分详解
2.1
app 部分
这部分是承载咱们整个项目的因此涉及的内容会更多些,咱们一块儿看一下:
dependencies:通常会放置登录校验、请求参数清洗等内容 作到依赖注入处理
fastapi_learn:这个是咱们的项目文件,好比你的项目名称为:xxx_app 则这个文件夹就是 xxx_app 在这个文件夹中方的通常都是全局的配置文件信息
libs:通常存放的是咱们本身抽象出来的公共类库或则根据业务场景抽象出来能够复用的一些工具类
managers:这个文件存放的基本都是操做数据库相关处理业务的复杂业务逻辑基本都会在这里处理
middlewares:这个文件主要存放咱们的自定义的中间件,好比咱们有些公共的中间件作限流的、作分流的均可以在这个文件夹中得以体现
responses:这个文件主要是对咱们返回给前端、客户端的接口数据结构进行格式化和自定义处理
routes:这个文件件主要是咱们的路由转发,对来自前端、客户端的请求进行转发的入口
schemas:这个文件主要存放的是咱们各个接口的入参、出参的各个字段的类型进行定义
utils:这个文件也是存放一些工具方法,这个工具方法与 libs 核心区别是: libs 中的东西变动频率比 utils 低的多
config.py:这个单独文件主要是放置咱们的配置信息
log_settings.py:这个单独文件主要是放置咱们关于日志的配置文件
main.py:这个单独文件是咱们项目启动的核心文件,咱们的项目就是用这个文件启动的
2.2
docs 部分
这部分主要是承载咱们整个项目的文档的文件,好比你如今涉及了一个用户表结构,怎么记录呢?你就能够在这个文件中创建一个 create_user_table_sql.md 这样一个文件,在这个文件中能够记录你本次涉及的一些详细信息。
2.3
requirements 部分
这部分主要是维护咱们项目中能使用到的一些第三方的库文件,好比:咱们能够在这个文件中创建一个文件: requirements.txt 在这个文件中能够添加好比:fastapi==0.61.1requests==2.24.0tornado==5.1.1urllib3==1.25.10uvicorn==0.11.8......等等的第三方库信息
2.4
scripts 部分
这部分主要是承载咱们项目中关于代码规范的脚本,核心的主要为:作检查的 check、作格式化的 format、作类型校验的 lint 等等。
2.5
tests 部分
这部分主要承载的是咱们开发过程当中的一些测试案例,用于对咱们的代码进行单元测试。
3
fastapi 各个部分图示
4
fastapi 项目总结
1.本节主要是分享了一下 fastapi 中关于项目组织的相关内容,让你们在构建基于 fastapi 的大型项目的时候能心中有数
2.本节也是 fastapi 相关内容的最后一节,若对于 fastapi 相关的内容感兴趣能够看看以前的内容
原创不易,只愿能帮助那些须要这些内容的同行或刚入行的小伙伴,你的每次 点赞、分享 都是我继续创做下去的动力,我但愿能在推广 python 技术的道路上尽我一份力量,欢迎在评论区向我提问,我都会一一解答,记得一键三连支持一下哦!
加入python学习交流微信群,请后台回复「入群」
往期推荐
大型fastapi项目实战 靠 python 中间件解决方案涨薪了
大型fastapi项目实战 高并发请求神器之aiohttp(下)
大型fastapi项目实战 高并发请求神器之aiohttp(上) [建议收藏]
本文分享自微信公众号 - python编程军火库(PythonCoder1024)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。