FastAPI入門:demo、路徑參數、查詢參數

demo

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def root():return {"message": "Hello World"}

在終端運行

fastapi dev main.py

結果如下:
在這里插入圖片描述
打開http://127.0.0.1:8000:
在這里插入圖片描述
交互式API文檔:位于http://127.0.0.1:8000/docs
在這里插入圖片描述
可選的API文檔:位于http://127.0.0.1:8000/redoc
在這里插入圖片描述

路徑參數

FastAPI 支持使用 Python 字符串格式化語法聲明路徑參數(變量)

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id):return {"item_id": item_id}

這段代碼把路徑參數 item_id 的值傳遞給路徑函數的參數 item_id
在這里插入圖片描述
路徑有順序之分。例如要使用 /users/me 獲取當前用戶的數據。然后還要使用 /users/{user_id},通過用戶 ID 獲取指定用戶的數據。
由于路徑操作是按順序依次運行的,因此,一定要在 /users/{user_id} 之前聲明 /users/me

預設值

路徑操作可以使用 Python 的 Enum 類型接收預設的路徑參數

class ModelName(str, Enum):# 多重繼承,繼承str和Enumalexnet = "alexnet"resnet = "resnet"lenet = "lenet"

包含路徑的路徑參數

在結尾加上:path表示匹配的是路徑

from fastapi import FastAPIapp = FastAPI()@app.get("/files/{file_path:path}")
async def read_file(file_path: str):return {"file_path": file_path}

查詢參數

聲明的參數不是路徑參數時,路徑操作函數會把該參數自動解釋為查詢參數。

可選參數

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: str, q: str | None = None, short: bool = False):item = {"item_id": item_id}if q:item.update({"q": q})if not short:item.update({"description": "This is an amazing item that has a long description"})return item

將參數默認值設為None即聲明可選參數.不聲明默認值均為必選參數

布爾類型參數

FastAPI 會按照以下規則進行轉換:

轉換為 True 的值:
“true” (不區分大小寫)
“True”
“TRUE”
“1”
“yes”
“on”
轉換為 False 的值:
“false” (不區分大小寫)
“False”
“FALSE”
“0”
“no”
“off”
參數不存在時 (使用默認值 False)

from fastapi import FastAPIapp = FastAPI()@app.get("/items/{item_id}")
async def read_item(item_id: str, q: str | None = None, short: bool = False):item = {"item_id": item_id}if q:item.update({"q": q})if not short:item.update({"description": "This is an amazing item that has a long description"})return item

多個路徑和查詢參數

FastAPI 可以識別同時聲明的多個路徑參數和查詢參數。而且聲明查詢參數的順序并不重要。
FastAPI 通過參數名進行檢測:

from fastapi import FastAPIapp = FastAPI()@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(user_id: int, item_id: str, q: str | None = None, short: bool = False
):item = {"item_id": item_id, "owner_id": user_id}if q:item.update({"q": q})if not short:item.update({"description": "This is an amazing item that has a long description"})return item

訪問:http://127.0.0.1:8000/users/1/items/4?q=4&short=0
在這里插入圖片描述

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

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

相關文章

pytest中的rerunfailures的插件(失敗重試)

目錄 1-- 安裝rerunfailures插件 2-- rerunfailures的使用 3-- 重試案例 安裝rerunfailures插件 pip install pytest-rerunfailures點擊左下角的控制臺面板 輸入 pip install pytest-rerunfailures 出現上圖的情況就算安裝完成了 rerunfailures的使用 可以添加一下參數使用&…

SpringMVC——建立連接

建立連接 將用戶(瀏覽器)和java程序連接起來,也就是訪問一個地址能夠調用到我們的Spring程序。在 Spring MVC 中使用 RequestMapping來實現URL 路由映射,也就是瀏覽器連接程序的作用。 1.RequestMapping注解介紹 RequestMapping…

蘑菇云路由器使用教程

1: 手機連接路由器的Wi-Fi,在瀏覽器輸入背面IP地址:192.168.132.1進入路由管理界面1.1: 電腦連接路由器網線在瀏覽器輸入背面IP地址:192.168.132.1進入路由管理界面賬號:admin密碼:123456782:選擇上網模式2.1&#xff…

ubuntu的tar解壓指令相關

1. 指令說明參數作用-xextract,解包-z通過 gzip 解壓(.tar.gz、.tgz)-vverbose,顯示過程-ffile,后面緊跟壓縮包文件名2. 什么時候用z參數場景是否加 -z結果.tar.gz / .tgz? 必須加 -z正常解壓.tar.gz / .tgz? 沒加 -…

車載診斷刷寫 --- Flash關于擦除和寫入大小

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活,除了生存溫飽問題之外,沒有什么過多的欲望,表面看起來很高冷,內心熱情,如果你身…

【Verilog HDL 入門教程】 —— 學長帶你學Verilog(基礎篇)

文章目錄一、Verilog HDL 概述1、Verilog HDL 是什么2、Verilog HDL產生的背景3、Verilog HDL 和 VHDL的區別二、Verilog HDL 基礎知識1、Verilog HDL 語言要素1.1、命名規則1.2、注釋符1.3、關鍵字1.4、數值1.4.1、整數及其表示1.4.2、實數及其表示1.4.3、字符串及其表示2、數…

SQL Developer Data Modeler:一款免費跨平臺的數據庫建模工具

SQL Developer Data Modeler 是由 Oracle 公司開發的一款免費的圖形化數據建模和數據庫設計工具,用于創建、瀏覽和編輯邏輯模型、關系模型、物理模型、多維模型和數據類型模型。 SQL Developer Data Modeler 既是一個獨立的應用程序,同時也被集成到了 Or…

CSS面試題及詳細答案140道之(21-40)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

篇四 tcp,udp客戶端服務器編程模型

一 前言 本篇內容主要介紹tcp,udp客戶端服務器編程的基礎API和示例代碼。 二 APIAPI用途使用方socket創建套接字,這是網絡通信的橋梁Tcp,udp客戶端,服務器bind綁定本地IP地址和端口Tcp,udp客戶端,服務器listen監聽端口&#xff0c…

ESP32學習筆記_Components(1)——使用LED Strip組件點亮LED燈帶

LED strip ESP32-S3 的 RMT(Remote Control Transceiver,遠程控制收發器)外設最初設計用于紅外收發,但由于其數據格式的靈活性,RMT 可以擴展為通用的信號收發器,能夠發送或接收多種類型的信號;…

無人機拋投模塊分析

一、設計核心要點1. 結構輕量化與強度平衡 材料選擇:主體采用航空鋁、碳纖維復合材料,降低自重并保證承重強度。 機械傳動優化:齒輪-齒條傳動替代傳統絲桿結構,簡化機構并提升可靠性。 模塊化設計:支持多倉位獨立控…

【硬件-筆試面試題】硬件/電子工程師,筆試面試題-33,(知識點:二極管結溫,熱阻,二極管功耗計算)

目錄 1、題目 2、解答 步驟一:明確熱阻的相關公式 步驟二:計算二極管的功耗 步驟三:計算二極管的結溫 3、相關知識點 一、熱阻的定義 二、二極管功耗的計算 三、結溫的計算 題目匯總版--鏈接: 【硬件-筆試面試題】硬件…

【LeetCode 熱題 100】79. 單詞搜索——回溯

Problem: 79. 單詞搜索 給定一個 m x n 二維字符網格 board 和一個字符串單詞 word 。如果 word 存在于網格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中“相鄰”單元格…

ARM SMMUv3控制器注冊過程分析(八)

1.概述 ARM SMMUv3控制器初始化及設備樹分析(七)中描述了IOMMU控制器初始化過程。SMMU驅動最后調用iommu_device_register將其注冊到內核中,下面分析一下SMMU控制器注冊過程中都做了那些工作。 如下圖所示,SMMU控制器注冊過程中…

Idefics3:構建和更好地理解視覺-語言模型:洞察與未來方向

溫馨提示: 本篇文章已同步至"AI專題精講" Idefics3:構建和更好地理解視覺-語言模型:洞察與未來方向 摘要 視覺-語言模型(VLMs)領域,接收圖像和文本作為輸入并輸出文本的模型,正在快…

利用DeepSeek解決kdb+x進行tpch測試的幾個問題及使用感受

上文其實沒有成功運行tpch的22個標準查詢中的任何一個,因為DeepSeek原始給出的導入語句有錯,有一些表沒有導入。 1.解決類型及長度問題導致的插入tbl文件到內存表失敗。 kdbx的Reference card()提到的基本數據類型如下: Basic datatypes n …

SGLang 核心技術詳解

SGLang 作為一個高性能的 LLM 服務框架,通過一系列先進的優化技術實現了卓越的推理性能。下面詳細解釋其核心功能組件: 1. RadixAttention 用于前綴緩存 核心概念 RadixAttention 是 SGLang 獨創的前綴緩存機制,基于 Radix Tree(基…

精密全波整流電路(四)

精密全波整流電路(四) 背景說明 [[精密半波整流電路|半波整流]]雖然能實現交直流信號的轉換,但是半波整流只能保留信號半個周期的能量,導致信號能量的利用率不高。 因此,在一些場合需要使用到全波整流電路。 同樣的&…

深入解讀Prometheus 2.33 Series Chunks壓縮特性:原理與實踐

深入解讀Prometheus 2.33 Series Chunks壓縮特性:原理與實踐 隨著監控指標規模不斷增長,Prometheus的本地TSDB存儲壓力日益增大。為提升存儲效率,Prometheus 2.33引入了Series Chunks壓縮特性,對時間序列數據在寫入和存儲時進行深…

SpringBoot整合Liquibase提升數據庫變更的可控性、安全性、自動化程度(最詳細)

為什么要使用liquibase?- 團隊協作與版本管理- 當多人(或多個小組)并行開發、對同一數據庫結構進行變更時,如果僅靠手寫 SQL 腳本,很 容易產生沖突或漏掉某些變更。- Liquibase 將所有 DDL/DML 操作以“changeset”形式納入源碼管…