本文說明如何在 GitHub Codespaces 環境中一起執行 FastAPI 和 Postgres。 Codespaces 是雲端裝載的開發環境,可讓您建立可設定且可重複的開發環境。
您可以使用 GitHub Codespaces 擴充功能,在瀏覽器中或整合開發環境中開啟範例存放庫,例如 Visual Studio Code。
或者,您也可以在本機複製範例存放庫。 當您在 Visual Studio Code 中開啟專案時,您可以使用開發容器,使用 開發容器來執行它。 開發容器需要將 Docker Desktop 安裝在本機。 如果未安裝 Docker,您可以使用 GitHub Codespaces 作為開發環境來執行專案。
使用 GitHub Codespaces 時,請記住,您每月有固定的核心時數。 本教學課程需要少於一個核心小時才能完成。 如需詳細資訊,請參閱 關於 GitHub Codespaces 的計費。
您也可以使用此設定作為起點,並修改範例以執行其他 Python Web 架構,例如 Django 或 Flask。
在 Codespaces 中啟動開發環境
本教學課程介紹許多建立和使用 GitHub Codespaces 的可能方式之一。
移至範例應用程式存放庫 https://github.com/Azure-Samples/msdocs-fastapi-postgres-codespace。
範例存放庫具有使用 Postgres 資料庫建立具有 FastAPI 應用程式的環境所需的所有設定。 您可以遵循 為 GitHub Codespaces 設定 Python 專案中的步驟來建立類似的專案。
選取 程式碼、Codespaces 標籤頁,然後+ 以建立新的 Codespace。
當容器完成建置時,請確認您在瀏覽器左下角看到 Codespaces ,並查看範例存放庫。
codespace 金鑰組態檔 devcontainer.json、 Dockerfile 和 docker-compose.yml。 如需詳細資訊,請參閱 GitHub Codespaces 概觀。
小提示
您也可以在 Visual Studio Code 中執行程式代碼空間。 選取瀏覽器左下角的 Codespaces 或 (
Ctrl
+Shift
+P
/Ctrl
+Command
+P
),然後輸入 “Codespaces”。 然後選取 [ 在 VS Code 中開啟]。 此外,如果您停止程式代碼空間並返回存放庫,並在 GitHub Codespaces 中再次開啟它,您可以選擇在 VS Code 或瀏覽器中開啟它。選取 .env.devcontainer 檔案,並使用相同的內容建立名為 .env 的複本。
.env 包含程式代碼中用來連線至資料庫的環境變數。
如果終端機視窗尚未開啟,請開啟 [命令選擇區] 來開啟一個視窗,
Ctrl
+Shift
+P
/Ctrl
+Command
+P
輸入「終端機:建立新終端機」,然後選取它來建立新的終端機。選取終端機視窗中的 [ 埠 ] 索引標籤,以確認 PostgreSQL 正在埠 5432 上執行。
在終端機視窗中,執行FastAPI應用程式。
uvicorn main:app --reload
選取 [ 在瀏覽器中開啟] 通知。
如果您沒有看到或錯過通知,請移至埠並尋找埠 8000 的本機位址。 使用該處所列的 URL。
在預覽 URL 結尾新增 /docs ,以查看 Swagger UI,可讓您測試 API 方法。
API 方法是從程式碼建立的 OpenAPI 介面中,由 FastAPI 產生的。
在 Swagger 頁面上,執行 POST 方法來新增餐廳。
展開 POST 方法。
選取 [試試看]。
填入請求內文。
{ "name": "Restaurant 1", "address": "Restaurant 1 address" }
選取 [執行 ] 以認可變更
線上到資料庫並檢視數據
返回專案的 GitHub Codespace,選取 SQLTools 擴充功能,然後選取 [要連線的 本機資料庫 ]。
建立容器時,應該安裝 SQLTools 擴充功能。 如果 SQLTools 擴充功能未出現在活動列中,請關閉程式代碼空間並重新開啟。
展開 [本機資料庫] 節點,直到您找到 餐廳 數據表為止,然後右鍵點選 [顯示資料表記錄]。
您應該會看到您新增的餐館。
收拾整理
若要停止使用 codespace,請關閉瀏覽器。 (或者,如果您以這種方式開啟 VS Code,請關閉 VS Code。)
如果您打算再次使用 codespace,您可以保留它。 只有執行中的程式代碼空間會產生CPU費用。 已停止的程式代碼空間只會產生記憶體成本。
如果您想要移除程式代碼空間,請前往 https://github.com/codespaces 管理您的程式代碼空間。