点击python编程从入门到实践置顶 公众号重磅 python入门资料,第一时间送达

 

自定义 fastapi 项目架构(完结)(图1)

 

 

                           

 

读完需要4分钟

速读仅需 2 分钟

/ python 大型项目之自定义 fastapi 项目架构(完结) /

 

平时无论是聊技术还是面试我想大家或多或少都会说,我的这个项目是基于 Django 框架开发的、基于 Tornado 框架开发的... 面试官也会问你这个项目是基于哪个框架开发的呢?每次问到这个问题的时候你是否会停下来思考两秒为何大家都会这样问在,这样说呢?用过多个 python web 框架的的同学应该清楚:在使用 Django 这种框架的时候我们是可以通过命令创建出一个项目的 项目中各个文件包含的内容也是有严格规定的,但是在使用类似于 flask、fastapi 的时候我们在官网或者网上找一个例子就会发现启动一个项目就简简单单的一个 py 文件就能完成请求和响应内容,是太简单了么?不是的 这些轻量级的框架项目组织需要我们自己来做,这里问题就来了,有些开发人员在规划的时候由于不合理而在后续开发、找问题... 等过程中让人绝望。基于此我分享一份在开发中如何合理规划项目的案例供大家学习参考

注:这篇文章核心是介绍 python 轻量级项目组织相关的问题,本案例不是标准,只是在多年的开发过程中总结的一套比较舒服、高效的组织代码的一种方式,只是单纯分享,不是强制。

1

fastapi 总体项目结构

我们大体把项目的目录结构划分为 5 个部分,分别为:app、docs、requirements、scripts、tests 。简单的介绍一下这几部分的核心功能:app:项目框架核心,做整体项目逻辑
docs:项目文档维护
requirements:维护项目的第三方安装包
scripts:对项目代码质量做检测的脚本
tests:测试案例
我们先看一下整体的图示:

自定义 fastapi 项目架构(完结)(图2)

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 各个部分图示

自定义 fastapi 项目架构(完结)(图3)

自定义 fastapi 项目架构(完结)(图4)

自定义 fastapi 项目架构(完结)(图5)

自定义 fastapi 项目架构(完结)(图6)

自定义 fastapi 项目架构(完结)(图7)

自定义 fastapi 项目架构(完结)(图8)

 

4

 

   

fastapi 项目总结

1.本节主要是分享了一下 fastapi 中关于项目组织的相关内容,让大家在构建基于 fastapi 的大型项目的时候能心中有数
2.本节也是 fastapi 相关内容的最后一节,若对于 fastapi 相关的内容感兴趣可以看看之前的内容

 

原创不易,只愿能帮助那些需要这些内容的同行或刚入行的小伙伴,你的每次 点赞分享 都是我继续创作下去的动力,我希望能在推广 python 技术的道路上尽我一份力量,欢迎在评论区向我提问,我都会一一解答,记得一键三连支持一下哦!

 

加入python学习交流微信群,请后台回复「入群

 

 

往期推荐

python生产实战 python 闭包之庖丁解牛篇

大型fastapi项目实战 靠 python 中间件解决方案涨薪了

大型fastapi项目实战 高并发请求神器之aiohttp(下)

大型fastapi项目实战 高并发请求神器之aiohttp(上) [建议收藏]

 

 

 

本文分享自微信公众号 - python编程军火库(PythonCoder1024)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。