使用 VSCode 開發 FastAPI 項目(1)

一、引言

FastAPI 是一款現代、快速(高性能)的 Web 框架,用于構建 API,使用 Python 3.7 及更高版本。它基于標準 Python 類型提示,具有自動生成文檔等出色功能。而 VSCode 憑借其輕量、強大的特性,為開發者提供了卓越的編碼體驗。本文將逐步指導你在 VSCode 中搭建 FastAPI 項目,并高效進行開發。

二、環境搭建

1. 安裝 VSCode

從官方網站(Visual Studio Code - Code Editing. Redefined)下載適合你操作系統的 VSCode 版本并安裝。安裝過程簡單直觀,按照向導提示完成即可。

2. 安裝 Python 擴展

在 VSCode 中打開擴展視圖(快捷鍵 Ctrl + Shift + X),搜索 “Python”,找到由 Microsoft 提供的 Python 擴展并安裝。該擴展能為 Python 文件提供智能感知、調試等功能,為后續開發奠定基礎。

3. 創建項目文件夾

在本地磁盤中創建一個文件夾用于存放 FastAPI 項目,例如 “D:\python\fastapi_project”。這個文件夾將成為你的項目根目錄,項目的一切相關文件都將存放于此。

4. 創建虛擬環境

打開 VSCode 的終端(快捷鍵 Ctrl + ),在項目根目錄下執行命令 python -m venv venv` 創建虛擬環境。第一個 “venv” 是 Python 的模塊名,第二個 “venv” 是你創建的虛擬環境文件夾名。這樣可以為項目創建一個獨立的 Python 運行環境,避免不同項目之間的依賴沖突。

5. 激活虛擬環境

  • Windows 環境 :在終端中運行 .\venv\Scripts\activate,激活后命令行提示符前會顯示虛擬環境名稱。

  • macOS/Linux 環境 :在終端中運行 source venv/bin/activate,成功激活后,終端提示符會有相應標識,表明當前處于虛擬環境。

三、安裝依賴

1. 創建 requirements.txt 文件

在項目根目錄下創建一個名為 “requirements.txt” 的文件。該文件用于指定項目所需的所有依賴庫及其版本,方便后續安裝和管理。添加以下內容:

復制

fastapi
uvicorn
pydantic
python-multipart

這些依賴庫分別是 FastAPI 框架本身、ASGI 服務器、數據驗證模型庫以及處理多部分請求數據的庫。

2. 安裝依賴

在終端中運行 pip install -r requirements.txt,這將根據 requirements.txt 文件中的內容安裝 FastAPI、Uvicorn 以及相關的依賴庫。安裝過程中,終端會顯示詳細的安裝進度,完成后,項目所需的依賴環境就搭建好了。

四、編寫代碼

1. 創建項目結構

在項目根目錄下創建一個名為 “demo1” 的文件夾,在其中新建 __init__.pymain.py 文件。

  • __init__.py 文件可以為空,它用于標識這是一個 Python 包,這樣 Python 解釋器就能將該文件夾識別為一個包,方便后續模塊的導入和管理。

  • main.py 文件中編寫 FastAPI 應用代碼。

2. 編寫 FastAPI 應用代碼

main.py 文件中添加以下代碼:

from fastapi import FastAPI
app = FastAPI()@app.get("/")
def read_root():return {"message": "Hello World,now start frist FastAPI"}

這段代碼首先導入 FastAPI 類,創建一個 FastAPI 應用實例 app。然后定義一個簡單的 GET 請求路由 “/”,當用戶訪問該路由時,返回一個包含 “Hello” 和 “World” 鍵值對的 JSON 響應。這為后續的 API 開發奠定了基礎。

五、配置調試

1. 創建 launch.json 文件

在項目根目錄下創建一個名為 “.vscode” 的文件夾,在其中創建 launch.json 文件。該文件用于配置 VSCode 的調試設置,添加以下配置:

{"version": "0.2.0","configurations": [{"name": "FastAPI: Uvicorn","type": "debugpy","request": "launch","module": "uvicorn","args": ["demo1.main:app",  // 替換為你的應用模塊路徑"--host", "0.0.0.0","--port", "8000","--reload"],"jinja": true,"justMyCode": true}]
}

其中,“name” 是調試配置的名稱,“type” 指定調試類型為 “debugpy”,“request” 為 “launch” 表示啟動調試。“module” 指定啟動的模塊是 “uvicorn”,“args” 中包含了運行 Uvicorn 服務器所需的參數,包括應用模塊路徑、主機地址、端口號以及熱重載選項。“jinja” 和 “justMyCode” 則是一些調試相關的設置。

六、啟動應用

1. 運行應用

在 VSCode 中打開調試視圖(快捷鍵 Ctrl + Shift + D),選擇 “FastAPI: Uvicorn” 配置,然后點擊 “開始調試” 按鈕或按 F5 鍵。這將啟動 Uvicorn 服務器,運行 FastAPI 應用。終端會顯示服務器的運行狀態和日志信息,如監聽的端口等。

2. 訪問應用

打開瀏覽器,訪問 http://127.0.0.1:8001,你應該會看到返回的內容為 {"Hello":"World"}。這表明你的 FastAPI 應用已經成功運行。此外,訪問 http://127.0.0.1:8000/docs 可以查看自動生成的 API 文檔,這是 FastAPI 的一大亮點,它基于應用中的路由和模型自動生成交互式文檔,方便你和他人了解和測試 API。

七、其他建議

1. 代碼格式化和類型檢查

安裝 Pylance 擴展,它可以幫助你檢測代碼中的類型錯誤,提高代碼質量。你還可以安裝 autopep8 或 black 等擴展來進行代碼格式化,保持代碼風格的一致性,提升代碼的可讀性。

2. 使用編輯器配置文件

創建 .editorconfigpyproject.toml 文件來統一團隊的代碼風格和配置。.editorconfig 文件可以指定文件編碼、縮進方式等通用的編輯器設置,而 pyproject.toml 文件可以配置 Python 項目相關的工具和參數,如依賴管理、測試工具等。

八、結語

通過以上步驟,你已經成功在 VSCode 中搭建并運行了一個 FastAPI 項目。這只是開發之旅的開始,你可以繼續深入學習 FastAPI 的更多高級功能,如請求體驗證、依賴注入、數據庫集成等,結合 VSCode 的強大功能,如代碼片段、多光標編輯等,進一步提升開發效率。希望本指南能為你在 Python Web 開發的道路上提供有價值的幫助,讓你能輕松應對各種項目挑戰,構建出高質量的 API 服務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83308.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Bash 腳本中的特殊變量

在 Bash 腳本和命令行中,?特殊變量?(Special Variables)主要用于獲取腳本或命令的上下文信息,如參數、進程狀態、返回值等。以下是常見的特殊變量及其典型應用場景: ?1. 腳本參數處理? $0、$1、$2 ... $9、${10}.…

免部署的數字人 API 調用教程:基于 wav2lip模型訓練的開放API,附 PHP 代碼示例

前言 去年我開始研究數字人模型算法,測試了市面上幾乎所有開源數字人模型,過程中踩了不少坑。最大的痛點就是訓練太燒顯卡了,光租顯卡的費用就花了我6個月的薪資,每次看到賬單都心疼。不過現在終于把基于wav2lip的數字人API做出來…

力扣HOT100之貪心算法:45. 跳躍游戲 II

這道題刷代碼隨想錄的時候也刷過,本來以為有了上一題55.跳躍游戲的基礎,這道題會好做一點,但是依舊想不出來思路,回去看了下自己當時寫的博客,沒想到今天的感受和當時的感受都一模一樣。。。What can I say?看了下代碼…

使用Docker申請Let‘s Encrypt證書

1、安裝Docker # 安裝Docker https://docs.docker.com/get-docker/# 安裝Docker Compose https://docs.docker.com/compose/install/# CentOS安裝Docker https://mp.weixin.qq.com/s/nHNPbCmdQs3E5x1QBP-ueA 2、申請Lets Encrypt證書 詳見: https://docs.linuxse…

算法題(167):FBI樹

審題: 本題需要我們將字符串按照題目要求進行遞歸展開,并按照后序遍歷的順序輸出 思路: 方法一:遞歸 首先我們需要模擬一下題目的意思 其實就是第一步判斷屬于什么字符,然后將字符串分兩半進行下一輪判斷。而由于題目要…

從“分散開發”到“智能協同” —— Gitee 如何賦能河南農擔構建金融級研發體系?

河南省農業信貸擔保有限責任公司(以下簡稱「河南農擔」)成立于 2016 年,是河南省屬骨干國有企業,承擔破解“三農”融資難題的重要職責。截至 2024 年底,河南農擔累計實現擔保規模 1037.05 億元,位居全國農擔…

青少年編程與數學 01-011 系統軟件簡介 14 Foxpro數據庫

青少年編程與數學 01-011 系統軟件簡介 14 Foxpro數據庫 一、歷史沿革二、技術架構三、主要功能四、應用場景五、產品版本六、使用方法七、技術價值八、歷史意義全文總結 **摘要:**FoxPro 是一款經典的桌面數據庫管理系統,起源于 1984 年的 FoxBASE&…

android studio向左向右滑動頁面

本文演示了Android Studio中使用ViewPager實現頁面切換的方法。通過創建包含3個頁面的ViewPager示例,詳細展示了實現步驟:1)在XML布局中配置ViewPager和切換按鈕;2)使用LayoutInflater動態加載頁面布局;3)自定義SimplePagerAdapte…

數據可視化新姿勢:Altair的聲明式魔法

文章目錄 一、告別編程式繪圖的苦日子二、5分鐘極速入門安裝篇(記得先備好虛擬環境!)核心三劍客 三、高階玩法揭秘1. 交互功能秒實現2. 復合圖表so easy3. 魔改樣式有套路 四、避坑指南(血淚經驗)五、Altair vs 其他庫…

PostgreSQL --數據庫操作

一、基本操作 1、登錄 #切換pg用戶 su - postgres#重啟服務 pg_ctl -D /usr/local/pgsql/data -l logfile restart#進入pg psql2、數據庫操作 2.1、列出庫 \l\lselect datname from database; \l:輸出比\l多了Size,Tablespace 和 Description 列 :擴展輸…

樹莓派超全系列教程文檔--(63)rpicam-apps可用選項介紹之常用選項

rpicam-apps可用選項介紹之常用選項 rpicam-apps 選項參考常用選項helpversionlist-camerascameraconfigtimeoutpreviewfullscreenqt-previewnopreviewinfo-textwidth 和 heightviewfinder-width 和 viewfinder-heightmode打包格式詳細信息解壓格式詳細信息 viewfinder-modelor…

AI的發展過程:深度學習中的自然語言處理(NLP);大語言模型(LLM)詳解;Transformer 模型結構詳解;大模型三要素:T-P-G 原則

AI的發展過程:深度學習中的自然語言處理(NLP);大語言模型(LLM)詳解;Transformer 模型結構詳解;大模型三要素:T-P-G 原則 AI的發展過程與大模型原理詳解一、AI的發展過程符…

SDXL 和 SDXL-Turbo 的區別

(1) SDXL(Stable Diffusion XL) 標準擴散模型,基于傳統的多步去噪(通常 20~50 步)。 訓練充分,特征更穩定,適合用于特征提取、方向學習(如 LoRA、SAE)。 計算成本高&am…

PyTorch:讓深度學習像搭積木一樣簡單!!!

文章目錄 🚀 一、 PyTorch的王炸:動態圖 vs 靜態圖靜態圖的“痛苦回憶”(前方高能吐槽!)PyTorch動態圖的降維打擊🔥 🔥 二、 不只是靈活!PyTorch的三大殺器1. 張量(Tenso…

LeetCode--27.移除元素

解題思路: 1.獲取信息: 給定一個數組和一個值,刪除數組中等于這個值的值 要求是,返回數組中不等于這個值的數的數目 并且要求在數組上刪除,不能使用額外輔助空間 還是給了評測標準(你可以根據它的原理來實現…

WebRTC(二):工作機制

核心組成 GetUserMedia:獲取本地音視頻設備(攝像頭、麥克風)數據流。RTCPeerConnection:實現點對點的媒體流傳輸和網絡連接管理。RTCDataChannel:點對點的任意數據通道(除音視頻外傳輸數據)。 …

機器學習+城市規劃第十五期:時空地理加權回歸(STGWR)

機器學習城市規劃第十五期:時空地理加權回歸(STGWR) 引言 隨著城市化進程的加速,城市規劃面臨越來越多復雜的挑戰。在傳統的城市規劃中,通常會考慮到地理位置的影響,但往往忽略了時間維度。而在現代城市的…

用虛擬機安裝macos系統之后進入Boot Manager頁面

安裝教程:在VMware中安裝macos系統教程 在VMware中安裝macos系統時啟動后進入Boot Manager界面,通常是由于虛擬機的固件類型設置于鏡像不兼容所致。 解決辦法:虛擬機默認使用UEFI啟動模式,但是部分macos鏡像需要切換到BIOS模式才…

基于API的Redis緩存實現

1.使用Redis API 進行業務數據緩存管理 編寫一個進行業務處理的類ApiCommentService,使用Autowired注解注入Redis API中常用的RedisTemplate(類似于Java基礎API中的JdbcTemplate); 然后在數據查詢、修改和刪除三個方法中,根據業…