前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义 fastapi 项目架构(完结)

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

作者头像
python编程从入门到实践
修改2021-06-03 12:59:05
6.5K2
修改2021-06-03 12:59:05
举报

读完需要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:测试案例 我们先看一下整体的图示:

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 技术的道路上尽我一份力量,欢迎在评论区向我提问,我都会一一解答,记得一键三连支持一下哦!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python编程从入门到实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档