FastAPI 框架,高性能,易于學(xué)習(xí),高效編碼,生產(chǎn)可用
這是FastAPI官網(wǎng)對(duì)框架的描述
FastAPI 是一個(gè)用于構(gòu)建 API 的現(xiàn)代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于標(biāo)準(zhǔn)的 Python 類型提示。
關(guān)鍵特性:
快速:可與 NodeJS 和 Go 比肩的極高性能(歸功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。
高效編碼:提高功能開發(fā)速度約 200% 至 300%。*
更少 bug:減少約 40% 的人為(開發(fā)者)導(dǎo)致錯(cuò)誤。*
智能:極佳的編輯器支持。處處皆可自動(dòng)補(bǔ)全,減少調(diào)試時(shí)間。
簡單:設(shè)計(jì)的易于使用和學(xué)習(xí),閱讀文檔的時(shí)間更短。
簡短:使代碼重復(fù)最小化。通過不同的參數(shù)聲明實(shí)現(xiàn)豐富功能。bug 更少。
健壯:生產(chǎn)可用級(jí)別的代碼。還有自動(dòng)生成的交互式文檔。
標(biāo)準(zhǔn)化:基于(并完全兼容)API 的相關(guān)開放標(biāo)準(zhǔn):OpenAPI (以前被稱為 Swagger) 和 JSON Schema。
摘自FastAPI官網(wǎng)
如果用于生產(chǎn),為了使代碼更加易讀、便于維護(hù),需要將代碼拆分為各個(gè)模塊。
官網(wǎng)給出了多模塊應(yīng)用的目錄結(jié)構(gòu):
├── app # 「app」是一個(gè) Python 包
│ ├── __init__.py # 這個(gè)文件使「app」成為一個(gè) Python 包
│ ├── main.py # 「main」模塊,例如 import app.main
│ ├── dependencies.py # 「dependencies」模塊,例如 import app.dependencies
│ └── routers # 「routers」是一個(gè)「Python 子包」
│ │ ├── __init__.py # 使「routers」成為一個(gè)「Python 子包」
│ │ ├── items.py # 「items」子模塊,例如 import app.routers.items
│ │ └── users.py # 「users」子模塊,例如 import app.routers.users
│ └── internal # 「internal」是一個(gè)「Python 子包」
│ ├── __init__.py # 使「internal」成為一個(gè)「Python 子包」
│ └── admin.py # 「admin」子模塊,例如 import app.internal.admin
在這里,可以把整個(gè)app看作一個(gè)python包,但這里只有FastAPI的基礎(chǔ)功能。如果自己需要一些日志、配置,可將它放在與app目錄平級(jí)的目錄下。我自己用的目錄結(jié)構(gòu)如下
├── alembic # alembic數(shù)據(jù)遷移自動(dòng)生成模塊
│ ├── README
│ ├── env.py
│ ├── script.py.mako
│ └── versions
│ └── 78864af08bb7_first_commit.py
├── alembic.ini # alembic配置文件
├── apis # FastAPI應(yīng)用
│ ├── __init__.py
│ ├── apis.py # FastAPI總接口
│ ├── login # login模塊
│ │ ├── __init__.py
│ │ └── controller.py # login相關(guān)方法
│ └── users # user模塊
│ ├── __init__.py
│ └── controller.py # user相關(guān)方法
├── core # 基礎(chǔ)配置
│ ├── __init__.py
│ ├── config.py
│ └── db.py
├── logs # 日志
│ └── 2022-05-31.log
├── main.py # FastAPI啟動(dòng)方法,調(diào)用apis.apis import api_router
├── main2.py
├── models # 數(shù)據(jù)表模塊
│ ├── __init__.py
│ ├── base.py # 數(shù)據(jù)表基礎(chǔ)模塊
│ ├── record # 操作日志表
│ │ ├── __init__.py
│ │ └── models.py
│ └── user # 用戶表
│ ├── __init__.py
│ └── models.py
├── requirements.txt
├── run.sh # 啟動(dòng)腳本
├── schema # 數(shù)據(jù)處理
│ ├── __init__.py
│ └── user.py
└── utils # 工具包
├── Record.py
├── __init__.py
└── logger.py # 日志模塊
以上目錄結(jié)構(gòu)能滿足自己大部分的開發(fā)需求
因?yàn)橘~號(hào)問題,代碼等幾天再上傳
以后會(huì)在此模板上繼續(xù)更新