WeHelp
FastAPI 是簡單易學、現代化、高效能的後端系統開發框架,近代 Python 最受歡迎的技術堆疊之一。
  1. 簡介、安裝、快速開始
  2. 主機名稱、埠號
  3. 路徑、路由處理
  4. 路徑參數處理
  5. 查詢參數處理
  6. 靜態檔案處理
  7. 回應格式處理
  8. 網址導向
  9. 網頁表單互動
  10. 網頁表單 POST 方法
  11. 樣板引擎
  12. 請求文本處理
  13. 常見的連線方法
  14. 參數資料驗證
  15. 使用者狀態管理
  16. 資料庫連線
主機名稱、埠號
## 1. 主機名稱與埠號的概念 ### 主機名稱(Host Name) 主機名稱用來指定「要連線到哪一台電腦或哪個網路介面」。 常見例子: - `localhost` - `127.0.0.1` - `example.com` - `192.168.1.10` 其中: - `localhost` 是一個主機名稱,通常會解析到本機位址。 - `127.0.0.1` 是 IPv4 的回送位址(loopback address),代表目前這台電腦本身。 - `example.com` 這類網域名稱會透過 DNS 解析成 IP 位址。 ### 埠號(Port) 埠號用來指定「要連線到這台電腦上的哪一個服務或程式」。 一台電腦可以同時執行很多網路服務,例如: ```text 127.0.0.1:8000 ``` 可拆解為: - `127.0.0.1`:主機位址,表示本機 - `8000`:埠號,表示要連線到使用 8000 埠的服務 常見埠號包括: | 埠號 | 常見用途 | |---|---| | 80 | HTTP | | 443 | HTTPS | | 22 | SSH | | 5432 | PostgreSQL | | 3306 | MySQL | | 8000 | 常見的開發用 Web 服務 | 完整的網址通常會寫成: ```text http://主機名稱:埠號/路徑 ``` 例如: ```text http://localhost:8000/items ``` 如果使用 HTTP 的預設埠號 80,通常可以省略埠號;但 8000 則需要明確寫出。 --- ## 2. `127.0.0.1` 的測試用途 `127.0.0.1` 是本機回送位址,表示「這台電腦自己」。透過這個位址發出的網路請求不會傳到區域網路或網際網路,而是在本機內部處理。 因此,下列兩個網址通常指向同一台本機服務: ```text http://127.0.0.1:8000 http://localhost:8000 ``` ### 主要用途 #### 測試本機服務 開發 Web API 或網站時,可以先讓服務只接受本機連線: ```text http://127.0.0.1:8000 ``` 這適合用來: - 測試 API 是否正常啟動 - 測試路由與回應內容 - 開發階段避免服務直接暴露到外部網路 - 測試資料庫、後端服務或本機工具 例如,若 FastAPI 服務正在執行,可以在瀏覽器開啟: ```text http://127.0.0.1:8000/docs ``` 查看自動產生的 Swagger API 文件。 ### 注意事項 `127.0.0.1` 只代表「目前這台電腦」。如果另一台電腦嘗試連線到: ```text http://127.0.0.1:8000 ``` 它連到的是另一台電腦自己的本機,而不是你的開發電腦。 若要讓區域網路中的其他裝置存取,通常需要讓服務綁定到: ```text 0.0.0.0 ``` 例如: ```bash uvicorn main:app --host 0.0.0.0 --port 8000 ``` 此時其他裝置應使用開發電腦的區域網路 IP,例如: ```text http://192.168.1.100:8000 ``` 而不是使用 `127.0.0.1`。 --- ## 3. FastAPI 的預設埠號 FastAPI 本身是 Web API 框架,實際負責啟動服務的通常是 Uvicorn。 一般使用以下方式啟動: ```bash uvicorn main:app ``` 其中: - `main`:代表 `main.py` - `app`:代表程式中的 FastAPI 物件,例如: ```python from fastapi import FastAPI app = FastAPI() ``` Uvicorn 預設通常會使用: ```text 主機:127.0.0.1 埠號:8000 ``` 因此可以透過以下網址存取: ```text http://127.0.0.1:8000 ``` API 文件則位於: ```text http://127.0.0.1:8000/docs ``` --- ## 4. 改變 FastAPI 的埠號 ### 方法一:使用 Uvicorn 命令列參數 例如將埠號改成 `8080`: ```bash uvicorn main:app --port 8080 ``` 此時網址變成: ```text http://127.0.0.1:8080 ``` 也可以同時指定主機與埠號: ```bash uvicorn main:app --host 0.0.0.0 --port 8080 ``` 這表示: - 綁定所有網路介面 - 使用 `8080` 埠號 若使用開發模式,也可以寫成: ```bash uvicorn main:app --reload --port 8080 ``` `--reload` 會在程式碼變更時自動重新啟動服務,適合開發階段使用。 某些 FastAPI CLI 版本也支援: ```bash fastapi dev main.py --port 8080 ``` --- ### 方法二:在 Python 程式中啟動 Uvicorn 也可以在程式內指定埠號: ```python from fastapi import FastAPI import uvicorn app = FastAPI() @app.get("/") def read_root(): return {"message": "Hello FastAPI"} if __name__ == "__main__": uvicorn.run(app, host="127.0.0.1", port=8080) ``` 執行: ```bash python main.py ``` 服務就會在以下網址啟動: ```text http://127.0.0.1:8080 ``` --- ## 總結 - **主機名稱**:指定要連線到哪台電腦,例如 `localhost` 或 `example.com`。 - **埠號**:指定該電腦上的哪個網路服務,例如 `8000`。 - **`127.0.0.1`**:代表本機,只適合本機測試,外部電腦無法透過它連線到你的服務。 - **FastAPI 常見預設埠號**:`8000`。 - **修改埠號**: ```bash uvicorn main:app --port 8080 ``` - **允許區域網路其他裝置存取**: ```bash uvicorn main:app --host 0.0.0.0 --port 8080 ```
相關學習地圖、教學課程
Python 後端工程、資料庫
從 0 開始,成為後端工程師的學習路徑。