1.FastAPI簡介與安裝

文章目錄

    • 為什么選擇FastAPI?
    • FastAPI支持的功能
    • FastAPI的安裝
    • 第一個FastAPI應用
    • 運行應用

為什么選擇FastAPI?

  • python web開發:
    • Django: 適合大型復雜項目;
    • Flask:適合靈活開發,搭建小型項目;
    • FastAPI: 兼具開發快捷和高性能的特點;
      • 編譯時檢查數據類型;
      • 支持異步;

FastAPI支持的功能

  • 自動生成API文檔:依據類型提示和OpenAPI規范,自動生成詳細API文檔,還提供Swagger UI和ReDoc可視化界面,方便測試與對接。

    • Swagger UI:例如http://127.0.0.1:8000/docs
    • ReDoc:例如http://127.0.0.1:8000/redoc
  • 數據驗證與序列化:內置數據驗證機制,按類型提示驗證輸入數據,自動返回錯誤信息。還能輕松實現數據的序列化和反序列化。

  • 依賴注入:支持依賴注入模式,分離通用功能,提高代碼復用性和可維護性,避免重復代碼。

  • 支持多種請求方法:全面支持GET、POST、PUT、DELETE等HTTP請求方法,適配各種業務場景。

FastAPI的安裝

# fastapi項目是一個Web應用
pip install fastapi
# UVicorn 是一個支持 ASGI 的 Web 服務器,它能夠運行符合 ASGI 規范的 Python Web 應用程序,例如 FastAPI 應用。
pip install uvicorn 

第一個FastAPI應用

from fastapi import FastAPI# 創建一個fastapi實例
app = FastAPI()@app.get("/")
def root():# 返回一個包含信息的字典return {"message": "歡迎來到FastAPI的世界"}

運行應用

  • 路徑區分

    • 當工作目錄跟main.py文件路徑一致時,運行以下命令

      uvicorn main:app --reload
      
    • 當工作目錄跟main.py文件路徑不一致時,main:app中的main要替換成從當前工作目錄到main.py的相對路徑,如下:

      # 代表工作目錄是在app01文件夾那一層,然后main.py在文件夾app01文件夾里面注意中間是用"."連接,類似與包的導入
      uvicorn app01.main:app  --reload
  • uvicorn:是我們之前安裝的ASGI服務器

  • main:app:表示我們要運行“main.py”文件中的app實例。

  • reload:它會讓Uvicorn在代碼發生變化時自動重新加載應用,

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

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

相關文章

【MyDB】一個仿照MySQL的輪子項目系列文章匯總

迄今所有系列文章內容如下: 代碼位于xianghua-2/MYDB: 一個仿MySQL的簡易數據庫 1 項目環境配置以及整體項目結構 【MyDB】1-MyDB環境配置及項目結構-CSDN博客 2 TransactionManager事務管理模塊 【MyDB】2-TransactionManager 事務管理-CSDN博客 3 DataManage…

2025年汽車加氣站操作工考試精選題庫

汽車加氣站操作工題庫中題目及答案: 單項選擇題 1、按壓力容器的設計壓力分為( )個壓力等級。 A. 3 B. 4 C. 5 答案:B 2、緩沖罐的安裝位置在天然氣壓縮機( )。 A. 前 B. 后 C. 中間 答案&#…

【Unity Bug 隨記】使用Rider debug功能時Unity Reload Domain卡死問題

使用Rider debug功能時Unity Reload Domain卡死 檢查是否使用unity version control版本控制系統(VCS),使用的話刪除這個包,再嘗試,如果能正常斷點調試,說明確實是VCS的問題。 我和幾個網友都是這個原因…

麒麟銀河V10服務器RabbitMQ安裝

安裝步驟 rabbitMQ依賴于erlang的環境,所以需要先安裝erlang,erlang跟rabbitMQ是有版本之間的關聯關系的,根據對應的版本去安裝下載,保證少出問題。 可以通過官網來查看RabbitMQ和erlang之間的版本對應關系 rabbitMQ和erlang之間…

springboot操作redis集群,注意事項

整合redis可查看博文 springboot 整合redis_springboot整合redis csdn-CSDN博客 集群中操作注意事項 1 多鍵操作失敗: 當使用multiGet等需要同時訪問多個鍵的方法時,如果沒有使用Hash Tags,這些鍵可能會被分配到不同的槽中。如果這些槽位于…

優選算法訓練篇07--力扣LCR179.查找總價格為目標值的兩個商品

目錄 1.題目鏈接:LCR179.查找總價格為目標值的兩個商品 2.題目描述: 3.解法一(暴力解法,會超時): 4.解法二(雙指針-對撞指針): 1.題目鏈接:LCR179.查找總價格為目標值的兩個商品 2.題目描述: 購物車…

KMP-子串匹配算法-關鍵點理解

1.理解next[]數組的使用與來歷 2.求解next[]數組 一、kmp算法的原理 首先觀察暴力解法:假設主串為:abdxxabc,模式串為abxxabd。 暴力解法,就是對主串每個字符作為第一個字符,開始和模式串比較。 比如:從…

Flutter 學習之旅 之 flutter 使用 SQLite(sqflite) 實現簡單的數據本地化 保存/獲取/移除/判斷是否存在 的簡單封裝

Flutter 學習之旅 之 flutter 使用 SQLite(sqflite) 實現簡單的數據本地化 保存/獲取/移除/判斷是否存在 的簡單封裝 目錄 Flutter 學習之旅 之 flutter 使用 SQLite(sqflite) 實現簡單的數據本地化 保存/獲取/移除/判斷是否存在…

群體智能優化算法-粒子群優化算法(Particle Swarm Optimization, PSO,含Matlab源代碼)

摘要(Abstract) 粒子群優化(PSO)是一種基于群體智能的優化算法,受鳥群覓食行為的啟發。PSO 通過模擬粒子(個體)在搜索空間中的運動來尋找最優解。每個粒子根據自身的歷史最優位置(p…

Redis 在windows下的下載安裝與配置

參考鏈接:https://developer.aliyun.com/article/1395346 下載 Redis 訪問 Redis 下載地址:https://github.com/tporadowski/redis/releases 下載 Redis 時,你可以選擇 ZIP 包或 MSI 安裝: ZIP包:需要手動解壓、初始化、配置和…

UE5材質法線強度控制節點FlattenNormal

連法 FlattenNormal內部是這樣的 FlattenNormal的作用是用來調整法線強度 連上FlattenNormal后 拉高數值

在 Elasticsearch 中探索基于 NVIDIA 的 GPU 加速向量搜索

作者:來自 Elastic Chris Hegarty 及 Hemant Malik 由 NVIDIA cuVS 提供支持,此次合作旨在為開發者在 Elasticsearch 中的向量搜索提供 GPU 加速。 在 Elastic Engineering 組織內,我們一直致力于優化向量數據庫的性能。我們的使命是讓 Lucen…

Android 13深度定制:SystemUI狀態欄時間居中顯示終極實戰指南

一、架構設計與技術解析 1. SystemUI狀態欄核心布局機制 層級結構 mermaid 復制 graph TDPhoneStatusBarView --> StatusBarContents[status_bar_contents]StatusBarContents --> LeftLayout[status_bar_left_side]StatusBarContents --> ClockLayout[Clock控件]Left…

ArcGIS10.X影像智能下載!遷移ArcGIS Pro批量智能高清影像下載工具至ArcGIS!

上周我們分享了 我寫的一個ArcGIS Pro版批量下載高清影像(谷歌、天地圖、ESRI等)工具給大家,Deepseek我!寫一個ArcGIS Pro批量下載高清影像(谷歌、天地圖、ESRI等)工具給大家-CSDN博客文章瀏覽閱讀130次。深…

前端面經分享(25/03/19)

北京一家做協同辦公軟件出海的公司,技術一面,20k-40k,要求3-5年 詳細聊了一下上家公司的項目上家公司的項目是不做了嗎,離職原因是什么,你覺得公司的這個產品怎么樣在做AI類的業務時,作為前端感覺跟常規業務…

7 款可視化爬蟲工具全解析:案例示范與操作指南

目錄 1. ParseHub 2.WebHarvy 3.DataMiner 4.Dexi.io 5.ContentGrabber 6.Portia 7.UiPath 文檔聚焦 7 款熱門可視化爬蟲工具,突出簡便的可視化操作,簡單拖拽、設置,無需編程知識,人人皆可上手。 1. ParseHub ParseHub 是一…

使用 `pytest` 框架時,可以通過極限封裝將 YAML 文件的讀取、解析

在使用 pytest 框架時,可以通過極限封裝將 YAML 文件的讀取、解析和測試用例的通用邏輯封裝成共享的方法或 fixture,從而減少重復代碼。以下是詳細的實現步驟和示例。 1. 封裝 YAML 文件讀取和解析 將 YAML 文件的讀取和解析邏輯封裝到一個工具函數中,供所有測試用例調用。…

HarmonyOS next性能優化:多維度策略與實戰案例

HarmonyOS next性能優化:多維度策略與實戰案例 在HarmonyOS next開發中,性能優化是提升用戶體驗、確保應用流暢運行的關鍵。本文將從多個角度探討HarmonyOS next的性能優化策略,并通過示例代碼展示優化前后的效果對比,幫助開發者…

springboot項目,mapper.xml里面,jdbcType報錯 已解決

找了很多資料,最后發現原來是依賴版本不兼容的問題。改了版本號即可 報錯原因: springboot版本為2.16.3 但是我導入的依賴版本是3.0.1,不兼容,報錯 解決:修改版本號,2.3.1兼容springboot2.6.x。依賴下載完…

rust學習筆記16-206.反轉鏈表(遞歸)

rust函數遞歸在14中已經提到,接下來我們把206.反轉鏈表,用遞歸法實現 遞歸函數通常包含兩個主要部分: 基準條件(Base Case):遞歸終止的條件,避免無限遞歸。 遞歸步驟(Recursive Ste…