本教程将一步步向你展示如何使用 FastAPI 的绝大部分特性。 各个章节的内容循序渐进,但是又围绕着单独的主题,所以你可以直接跳转到某个章节以解决你的特定需求。 本教程同样可以作为将来的参考手册。 你可以随时回到本教程并查阅你需要的内容。 所有代码片段都可以复制后直接使用(它们实际上是经过测试的 Python 文件)。 要运行任何示例,请将代码复制到 强烈建议你在本地编写或复制代码,对其进行编辑并运行。 在编辑器中使用 FastAPI 会真正地展现出它的优势:只需要编写很少的代码,所有的类型检查,代码补全等等。 安装 FastAPI¶第一个步骤是安装 FastAPI。 为了使用本教程,你可能需要安装所有的可选依赖及对应功能:
......以上安装还包括了 Note 你也可以分开来安装。 假如你想将应用程序部署到生产环境,你可能要执行以下操作: 并且安装
然后对你想使用的每个可选依赖项也执行相同的操作。 进阶用户指南¶在本教程-用户指南之后,你可以阅读进阶用户指南。 进阶用户指南以本教程为基础,使用相同的概念,并教授一些额外的特性。 但是你应该先阅读教程-用户指南(即你现在正在阅读的内容)。 教程经过精心设计,使你可以仅通过教程-用户指南来开发一个完整的应用程序,然后根据你的需要,使用进阶用户指南中的一些其他概念,以不同的方式来扩展它。
TL;DR
Requirements & Installation
基本結構與 在語法結構上,與 不過
了解裝飾子的概念後,參考官方文件的範例,在 from typing import Optional from fastapi import FastAPI app = FastAPI() # 建立一個 Fast API application @app.get("/") # 指定 api 路徑 (get方法) def read_root(): return {"Hello": "World"} @app.get("/users/{user_id}") # 指定 api 路徑 (get方法) def read_user(user_id: int, q: Optional[str] = None): return {"user_id": user_id, "q": q} 啟動服務與 需要透過 ASGI Server (bash script) uvicorn main:app --reload # uvicorn <檔名>:<app名稱> # --reload 在專案更新時,自動重新載入,類似Flask的debug模式 啟用後在瀏覽器輸入 {"user_id":8,"q":"minglunwu"} 當我們鍵入
型態提示(Typing Hints)舉例來說: 在上圖的 @app.get("/users/{user_id}") # 指定 api 路徑 (get方法) def read_user(user_id: int, q: Optional[str] = None): return {"user_id": user_id, "q": q} 在定義function的參數時,使用Python內建的型態檢查語法,指定各參數的型態,以上圖的Function來看,我們分別設定了下列的參數及型態:
使用 1. FastAPI 在收到請求時,會自動檢查參數的格式是否符合條件當 在解析 Request 所攜帶的參數時,將比對定義的變數型態,如果有不符合的,將會回傳錯誤訊息,舉例來說: 如果我們嘗試在瀏覽器中輸入 不符合規則的URL:
(將原本的整數 此時因為收到的參數 不像 {"detail":[{"loc":["path","user_id"],"msg":"value is not a valid integer","type":"type_error.integer"}]} 2. 自動轉換文件
完成了第一支 API 後,在瀏覽器輸入: 可以看到在畫面中,除了API的名稱外,參數的型態及Response的結果都包含在自動產生的文件中! 除了方便使用者閱讀外,這些文件也有提供即時互動功能,能夠即時測試: 撰寫API是一件費力耗神的工作,我曾傻傻地使用 後來嘗試使用 個人蠻喜歡 前往下集: Fast API 入門筆記 (二) - Typing Hint & Async Post Tags Fast API |