自定義 fastapi 項目架構(完結)

點擊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學習交流微信羣,請後臺回覆「入羣

 

 

往期推薦

python生產實戰 python 閉包之庖丁解牛篇

大型fastapi項目實戰 靠 python 中間件解決方案漲薪了

大型fastapi項目實戰 高併發請求神器之aiohttp(下)

大型fastapi項目實戰 高併發請求神器之aiohttp(上) [建議收藏]

 

 

 

本文分享自微信公衆號 - python編程軍火庫(PythonCoder1024)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索