docs/zh-hant/docs/features.md
FastAPI 提供了以下內容:
FastAPI 能生成互動式 API 文件和探索性的 Web 使用者介面。由於該框架基於 OpenAPI,因此有多種選擇,預設提供了兩種。
這一切都基於標準的 Python 型別宣告(感謝 Pydantic)。無需學習新的語法,只需使用標準的現代 Python。
如果你需要 2 分鐘來學習如何使用 Python 型別(即使你不使用 FastAPI),可以看看這個簡短的教學:Python 型別。
如果你寫帶有 Python 型別的程式碼:
from datetime import date
from pydantic import BaseModel
# 宣告一個變數為 string
# 並在函式中獲得 editor support
def main(user_id: str):
return user_id
# 宣告一個 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)
/// note
**second_user_data 意思是:
將 second_user_data 字典直接作為 key-value 引數傳遞,等同於:User(id=4, name="Mary", joined="2018-11-30")
///
整個框架的設計是為了讓使用變得簡單且直觀,在開始開發之前,所有決策都在多個編輯器上進行了測試,以確保提供最佳的開發體驗。
在最近的 Python 開發者調查中,我們能看到被使用最多的功能是 autocompletion。
整個 FastAPI 框架就是基於這一點,任何地方都可以進行自動補齊。
你幾乎不需要經常來回看文件。
在這裡,你的編輯器可能會這樣幫助你:
你將能進行程式碼補齊,這是在之前你可能曾認為不可能的事。例如,請求 JSON body(可能是巢狀的)中的鍵 price。
這樣比較不會輸錯鍵名,不用來回翻看文件,也不用來回滾動尋找你最後使用的 username 或者 user_name。
FastAPI 為你提供了預設值,讓你不必在初期進行繁瑣的配置,一切都可以自動運作。如果你有更具體的需求,則可以進行調整和自定義。
但預設情況下,一切都「直接可用」。
驗證大部分(甚至所有?)的 Python 資料型別,包括:
dict)。list) 定義項目型別。str) 欄位,定義最小或最大長度。int, float) 與其最大值和最小值等。驗證外來的型別,比如:
所有的驗證都由完善且強大的 Pydantic 處理。
FastAPI 已經整合了安全性和身份驗證的功能,但不會強制與特定的資料庫或資料模型進行綁定。
OpenAPI 中定義的安全模式,包括:
加上來自 Starlette(包括 session cookie)的所有安全特性。
所有的這些都是可重複使用的工具和套件,可以輕鬆與你的系統、資料儲存(Data Stores)、關聯式資料庫(RDBMS)以及非關聯式資料庫(NoSQL)等等整合。
FastAPI 有一個使用簡單,但是非常強大的 <dfn title='也稱為「components」、「resources」、「services」、「providers」'><strong>依賴注入</strong></dfn> 系統。
或者說,無需其他額外配置,直接導入並使用你所需要的程式碼。
任何整合都被設計得非常簡單易用(通過依賴注入),你只需用與路徑操作相同的結構和語法,用兩行程式碼就能為你的應用程式建立一個「擴充功能」。
FastAPI 完全相容且基於 Starlette。所以,你有其他的 Starlette 程式碼也能正常運作。FastAPI 實際上是 Starlette 的一個子類別。所以,如果你已經知道或者使用過 Starlette,大部分的功能會以相同的方式運作。
通過 FastAPI 你可以獲得所有 Starlette 的特性(FastAPI 就像加強版的 Starlette):
FastAPI 完全相容且基於 Pydantic。所以,你有其他 Pydantic 程式碼也能正常工作。
相容包括基於 Pydantic 的外部函式庫,例如用於資料庫的 <abbr title="Object-Relational Mapper - 物件關聯對映器">ORM</abbr>s、<abbr title="Object-Document Mapper - 物件文件對映器">ODM</abbr>s。
這也意味著在很多情況下,你可以把從請求中獲得的物件直接傳到資料庫,因為所有資料都會自動進行驗證。
反之亦然,在很多情況下,你也可以把從資料庫中獲取的物件直接傳給客戶端。
通過 FastAPI 你可以獲得所有 Pydantic 的特性(FastAPI 基於 Pydantic 做了所有的資料處理):
List 和 Dict 等型別來定義。