新聞中心
FastAPI 提供了以下內(nèi)容:

目前創(chuàng)新互聯(lián)已為數(shù)千家的企業(yè)提供了網(wǎng)站建設、域名、雅安服務器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設計、澄城網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
基于開放標準
- 用于創(chuàng)建 API 的 OpenAPI 包含了路徑操作,請求參數(shù),請求體,安全性等的聲明。
- 使用 JSON Schema (因為 OpenAPI 本身就是基于 JSON Schema 的)自動生成數(shù)據(jù)模型文檔。
- 經(jīng)過了縝密的研究后圍繞這些標準而設計。并非狗尾續(xù)貂。
- 這也允許了在很多語言中自動生成客戶端代碼。
自動生成文檔
交互式 API 文檔以及具探索性 web 界面。因為該框架是基于 OpenAPI,所以有很多可選項,F(xiàn)astAPI 默認自帶兩個交互式 API 文檔。
- Swagger UI,可交互式操作,能在瀏覽器中直接調(diào)用和測試你的 API 。
- 另外的 API 文檔:ReDoc
更主流的 Python
全部都基于標準的 Python 3.6 類型聲明(感謝 Pydantic )。沒有新的語法需要學習。只需要標準的 Python 。
如果你需要2分鐘來學習如何使用 Python 類型(即使你不使用 FastAPI ),看看這個簡短的教程:Python Types。
編寫帶有類型標注的標準 Python:
from datetime import date
from pydantic import BaseModel
# Declare a variable as a str
# and get editor support inside the function
def main(user_id: str):
return user_id
# A Pydantic model
class User(BaseModel):
id: int
name: str
joined: date
可以像這樣來使用:
my_user: User = User(id=3, name="John Doe", joined="2018-07-19")
second_user_data = {
"id": 4,
"name": "Mary",
"joined": "2018-11-30",
}
my_second_user: User = User(**second_user_data)
Info
**second_user_data 意思是:
直接將second_user_data字典的鍵和值直接作為key-value參數(shù)傳遞,等同于:User(id=4, name="Mary", joined="2018-11-30")
編輯器支持
整個框架都被設計得易于使用且直觀,所有的決定都在開發(fā)之前就在多個編輯器上進行了測試,來確保最佳的開發(fā)體驗。
在最近的 Python 開發(fā)者調(diào)查中,我們能看到 被使用最多的功能是"自動補全"。
整個 FastAPI 框架就是基于這一點的。任何地方都可以進行自動補全。
你幾乎不需要經(jīng)?;貋砜次臋n。
在這里,你的編輯器可能會這樣幫助你:
- Visual Studio Code 中:
- PyCharm 中:
你將能進行代碼補全,這是在之前你可能曾認為不可能的事。例如,在來自請求 JSON 體(可能是嵌套的)中的鍵 price。
不會再輸錯鍵名,來回翻看文檔,或者來回滾動尋找你最后使用的 username 或者 user_name 。
簡潔
任何類型都有合理的默認值,任何和地方都有可選配置。所有的參數(shù)被微調(diào),來滿足你的需求,定義成你需要的 API。
但是默認情況下,一切都能“順利工作”。
驗證
- 校驗大部分(甚至所有?)的 Python 數(shù)據(jù)類型,包括:JSON 對象 (dict).JSON 數(shù)組 (list) 定義成員類型。字符串 (str) 字段, 定義最小或最大長度。數(shù)字 (int, float) 有最大值和最小值, 等等。
- 校驗外來類型, 比如:URL.Email.UUID....及其他.
所有的校驗都由完善且強大的 Pydantic 處理。
安全性及身份驗證
集成了安全性和身份認證。杜絕數(shù)據(jù)庫或者數(shù)據(jù)模型的滲透風險。
OpenAPI 中定義的安全模式,包括:
- HTTP 基本認證。
- OAuth2 (也使用 JWT tokens)。
- API 密鑰,在:請求頭。查詢參數(shù)。Cookies, 等等。
加上來自 Starlette(包括 session cookie)的所有安全特性。
所有的這些都是可復用的工具和組件,可以輕松與你的系統(tǒng),數(shù)據(jù)倉庫,關系型以及 NoSQL 數(shù)據(jù)庫等等集成。
依賴注入
FastAPI 有一個使用非常簡單,但是非常強大的依賴注入系統(tǒng)。
- 甚至依賴也可以有依賴,創(chuàng)建一個層級或者“圖”依賴。
- 所有自動化處理都由框架完成。
- 所有的依賴關系都可以從請求中獲取數(shù)據(jù),并且增加了路徑操作約束和自動文檔生成。
- 即使在依賴項中被定義的路徑操作 也會自動驗證。
- 支持復雜的用戶身份認證系統(tǒng),數(shù)據(jù)庫連接等等。
- 不依賴數(shù)據(jù)庫,前端等。 但是和它們集成很簡單。
無限制"插件"
或者說,導入并使用你需要的代碼,而不需要它們。
任何集成都被設計得被易于使用(用依賴關系),你可以用和路徑操作相同的結構和語法,在兩行代碼中為你的應用創(chuàng)建一個“插件”。
測試
- 100% 測試覆蓋。
- 代碼庫100% 類型注釋。
- 用于生產(chǎn)應用。
Starlette 特性
FastAPI 和 Starlette 完全兼容(并基于)。所以,你有的其他的 Starlette 代碼也能正常工作。FastAPI 實際上是 Starlette的一個子類。所以,如果你已經(jīng)知道或者使用 Starlette,大部分的功能會以相同的方式工作。
通過 FastAPI 你可以獲得所有 Starlette 的特性 ( FastAPI 就像加強版的 Starlette ):
- 令人驚嘆的性能。它是 Python 可用的最快的框架之一,和 NodeJS 及 Go 相當。
- 支持 WebSocket 。
- 支持 GraphQL 。
- 后臺任務處理。
- Startup 和 shutdown 事件。
- 測試客戶端基于 requests。
- CORS, GZip, 靜態(tài)文件, 流響應。
- 支持 Session 和 Cookie 。
- 100% 測試覆蓋率。
- 代碼庫 100% 類型注釋。
Pydantic 特性
FastAPI 和 Pydantic 完全兼容(并基于)。所以,你有的其他的 Pydantic 代碼也能正常工作。
兼容包括基于 Pydantic 的外部庫, 例如用與數(shù)據(jù)庫的 ORMs, ODMs。
這也意味著在很多情況下,你可以將從請求中獲得的相同對象直接傳到數(shù)據(jù)庫,因為所有的驗證都是自動的。
反之亦然,在很多情況下,你也可以將從數(shù)據(jù)庫中獲取的對象直接傳到客戶端。
通過 FastAPI 你可以獲得所有 Pydantic (FastAPI 基于 Pydantic 做了所有的數(shù)據(jù)處理):
- 更簡單:沒有新的模式定義 micro-language 需要學習。如果你知道 Python types,你就知道如何使用 Pydantic。
- 和你 IDE/linter/brain 適配:因為 pydantic 數(shù)據(jù)結構僅僅是你定義的類的實例;自動補全,linting,mypy 以及你的直覺應該可以和你驗證的數(shù)據(jù)一起正常工作。
- 更快:在 基準測試 中,Pydantic 比其他被測試的庫都要快。
- 驗證復雜結構:使用分層的 Pydantic 模型, Python typing的 List 和 Dict 等等。驗證器使我們能夠簡單清楚的將復雜的數(shù)據(jù)模式定義、檢查并記錄為 JSON Schema。你可以擁有深度嵌套的 JSON 對象并對它們進行驗證和注釋。
- 可擴展:Pydantic 允許定義自定義數(shù)據(jù)類型或者你可以用驗證器裝飾器對被裝飾的模型上的方法擴展驗證。
- 100% 測試覆蓋率。
當前標題:創(chuàng)新互聯(lián)FastAPI教程:FastAPI特性
網(wǎng)站鏈接:http://m.fisionsoft.com.cn/article/dhjpjoi.html


咨詢
建站咨詢
