FastAPI使用筆記

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)鍵特性:

  • 快速:可與 NodeJSGo 比肩的極高性能(歸功于 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ù)更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容