2 fastAPI请求参数

news2025/3/12 14:01:48

1. 路径参数 (Path Parameters)

路径参数是 URL 路径的一部分,通常用于标识资源的唯一性。路径参数在 FastAPI 中通过在路由装饰器中使用大括号 {} 来定义。

获取路径参数的方式
from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}
示例请求:
  • 请求路径:GET /items/42
  • 返回:{"item_id": 42}

在上面的例子中,item_id 是路径参数,FastAPI 会自动将它解析为函数参数 item_id


2. 查询参数 (Query Parameters)

查询参数通过 URL 的查询字符串部分传递,例如 ?key=value。查询参数通常用于过滤、分页等操作。FastAPI 会自动解析查询参数,并将它们传递给视图函数。

获取查询参数的方式
from fastapi import FastAPI

app = FastAPI()

@app.get("/items")
def read_items(skip: int = 0, limit: int = 10):
    return {"skip": skip, "limit": limit}
示例请求:
  • 请求路径:GET /items?skip=10&limit=20
  • 返回:{"skip": 10, "limit": 20}

在这个例子中,skiplimit 是查询参数。FastAPI 会自动将它们映射到函数参数,并提供默认值。


3. 请求体参数 (Request Body)

请求体参数用于 POST、PUT、PATCH 请求中,客户端将数据以 JSON 格式或其他格式(如表单数据)发送到服务器。FastAPI 使用 Pydantic 模型来自动验证和解析请求体的数据。

获取请求体参数的方式
from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    description: str = None

app = FastAPI()

@app.post("/items/")
def create_item(item: Item):
    return {"name": item.name, "price": item.price}
示例请求:
  • 请求路径:POST /items/
  • 请求体(JSON 格式):
{
  "name": "Laptop",
  "price": 1200.50
}
  • 返回:{"name": "Laptop", "price": 1200.5}

在上面的例子中,item 是一个请求体参数,FastAPI 会将请求体中的 JSON 数据自动解析为 Item 类的实例。


4. 请求头 (Request Headers)

请求头包含了有关请求的额外信息,例如认证信息、用户代理、内容类型等。FastAPI 可以通过 Request 对象或直接使用 Header 来获取请求头中的数据。

获取请求头的方式
from fastapi import FastAPI, Header

app = FastAPI()

@app.get("/items/")
def read_items(user_agent: str = Header(None)):
    return {"User-Agent": user_agent}
示例请求:
  • 请求路径:GET /items/
  • 请求头:User-Agent: Mozilla/5.0
  • 返回:{"User-Agent": "Mozilla/5.0"}

在这个例子中,user_agent 是请求头中的 User-Agent,FastAPI 使用 Header 函数从请求头中提取该值。


5. 请求 Cookies (Cookies)

FastAPI 可以从请求的 cookies 中获取信息。如果你想从用户的 cookies 中获取值,可以使用 Cookie 函数。

获取请求 cookies 的方式
from fastapi import FastAPI, Cookie

app = FastAPI()

@app.get("/items/")
def read_items(session_id: str = Cookie(None)):
    return {"session_id": session_id}
示例请求:
  • 请求路径:GET /items/
  • 请求头:Cookie: session_id=12345
  • 返回:{"session_id": "12345"}

在这个例子中,session_id 是从 cookies 中提取的值。


6. 文件上传 (File Upload)

FastAPI 支持文件上传,可以通过 FileUploadFile 类来处理文件上传。UploadFile 提供了更高效的文件处理功能,可以异步读取文件内容。

获取文件上传的方式
from fastapi import FastAPI, File, UploadFile

app = FastAPI()

@app.post("/uploadfile/")
async def upload_file(file: UploadFile = File(...)):
    return {"filename": file.filename}
示例请求:
  • 请求路径:POST /uploadfile/
  • 请求体:上传的文件
  • 返回:{"filename": "example.txt"}

在这个例子中,file 是一个上传的文件,FastAPI 自动处理文件的上传,并通过 UploadFile 提供对文件的异步访问。


7. 查询参数、路径参数、请求体参数的混合使用

FastAPI 允许在同一路由中混合使用路径参数、查询参数和请求体参数。FastAPI 会根据请求自动将数据映射到函数参数。

示例:
from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float

app = FastAPI()

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item, discount: float = 0):
    return {"item_id": item_id, "name": item.name, "price": item.price, "discount": discount}
示例请求:
  • 请求路径:PUT /items/42?discount=10
  • 请求体(JSON 格式):
{
  "name": "Laptop",
  "price": 1200.50
}
  • 返回:{"item_id": 42, "name": "Laptop", "price": 1200.5, "discount": 10}

在这个例子中,item_id 是路径参数,item 是请求体参数,discount 是查询参数。

FastAPI 提供了多种灵活的方式来获取请求中的参数,包括:

  • 路径参数:通过 URL 路径部分传递,常用于标识资源。
  • 查询参数:通过 URL 查询字符串传递,适用于过滤、排序等操作。
  • 请求体参数:通过 POST、PUT、PATCH 请求的请求体传递,通常使用 Pydantic 模型进行验证。
  • 请求头:通过 Header 获取 HTTP 请求头中的数据。
  • 请求 Cookies:通过 Cookie 获取请求中的 cookies。
  • 文件上传:通过 FileUploadFile 处理文件上传。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2294184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为何实现大语言模型的高效推理以及充分释放 AI 芯片的计算能力对于企业级落地应用来说,被认为具备显著的研究价值与重要意义?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ AI 芯片:为人工智能而生的 “大脑” AI 芯片,又称人工智能加速器或计算卡,是专为加速人工智能应用,特别是深度学习任务设计的专用集成电路(A…

C++11详解(二) -- 引用折叠和完美转发

文章目录 2. 右值引用和移动语义2.6 类型分类(实践中没什么用)2.7 引用折叠2.8 完美转发2.9 引用折叠和完美转发的实例 2. 右值引用和移动语义 2.6 类型分类(实践中没什么用) C11以后,进一步对类型进行了划分&#x…

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取

AI 编程工具—Cursor 进阶篇 文章改写生成整理爬取 其实对做自媒体的人而言,整理素材其实是一件非常耗时的事情,今天我们来看一下如何使用Cursor来帮我们解决这些问题,首先我们要建一个单独的项目,因为这个项目不涉及任何代码操作,只是文字相关的事情,还有就是这个项目需…

Yageo国巨的RC系列0402封装1%电阻库来了

工作使用Cadence多年,很多时候麻烦的就是整理BOM,因为设计原理图的时候图省事,可能只修改value值和封装。 但是厂家,规格型号,物料描述等属性需要在最后的时候一行一行的修改,繁琐又容易出错,过…

nginx伪静态配置解释和Nginx 常见的配置

文章目录 禁止访问 runtime 和 application 目录rewrite 对 URL 进行重写或重定向301重定向root 静态资源路径处理alias 路径映射try_files 伪静态规则Nginx 配置有许多其他常见的场景和使用方式 1. **基本的反向代理配置**2. **负载均衡配置**3. **限制访问(IP 限…

AI安全最佳实践:AI云原生开发安全评估矩阵(下)

上篇小李哥带大家一起了解了什么是AI应用云原生开发安全评估矩阵,并且介绍了利用该矩阵如何确定我们云上AI应用的安全评估范围,接下来我们将继续本系列的下篇,基于该安全评估矩阵设计和实施我们系统应具备的安全控制。 优先考虑的安全控制 …

Windows DeepSeek API调用基础教程-Python

DeepSeek API 调用🚀 在最近DeepSeek大火之后,在各个媒体上都能看到对这个大模型的报道,这个使用MoE的架构的大模型,在使用体验上,确实让我眼前一亮,我自己平时也是已经在用着GPT-o1,对比下来发…

达梦数据库从单主模式转换为主备模式

目录标题 达梦数据库单主转主备配置笔记前期准备服务器环境数据库安装磁盘空间 流程流程图说明 详细步骤1. 检查主库归档模式2. 配置主库配置文件dm.ini 文件dmmal.ini 文件dmarch.ini 文件 3. 备份主库数据库4. 备库配置新建备库数据库配置备库配置文件dm.ini 文件复制主库的 …

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合,旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍: 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…

ES冷热数据分离配置

冷热数据是根据索引创建时间来进行迁移的。一旦迁移到冷数据节点,则无法再恢复成热数据,因为热数据节点中该索引已经没有分片存在了。 基于Docker搭建ES集群,并设置冷热数据节点 配置冷热数据迁移策略 PUT https://192.168.x.xx:19200/_ilm/policy/my…

七大排序思想

目录 七大排序的时间复杂度和稳定性 排序 插入排序 简单插入排序 希尔排序 选择排序 简单选择排序 堆排序 交换排序 冒泡排序 快速排序 快排的递归实现 hoare版本的快排 挖坑法的快排 双指针法的快排 快排的非递归 归并排序 归并的递归实现 归并的非递归实现…

制作PE启动盘(内含Win11 iso镜像)

前言 本文用于记录制作PE启动盘过程,学习记录用,如有不对请指出,谢谢! 参考视频: 1. 微PE下载:https://www.bilibili.com/video/BV1vT4y1n7JX/?spm_id_from333.788.top_right_bar_window_history.conte…

css字体样式与文本样式详解

目录 一、CSS字体样式 1. 字体类型(font-family) 2. 字体大小(font-size) 3. 字体粗细(font-weight) 4. 字体风格(font-style) 5. 字体颜色(color) 6. …

游戏引擎学习第89天

回顾 由于一直没有渲染器,终于决定开始动手做一个渲染器,虽然开始时并不确定该如何进行,但一旦开始做,发现这其实是正确的决定。因此,接下来可能会花一到两周的时间来编写渲染器,甚至可能更长时间&#xf…

Linux学习笔记16---高精度延时实验

延时函数是很常用的 API 函数,在前面的实验中我们使用循环来实现延时函数,但是使用循环来实现的延时函数不准确,误差会很大。虽然使用到延时函数的地方精度要求都不会很严格( 要求严格的话就使用硬件定时器了 ) ,但是延时函数肯定…

杨氏数组中查找某一数值是否存在

判断数据是否存在于杨氏矩阵中 (小米真题) 题目:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时间复杂度小于O(N) …

51单片机 02 独立按键

一、独立按键控制LED亮灭 轻触按键&#xff1a;相当于是一种电子开关&#xff0c;按下时开关接通&#xff0c;松开时开关断开&#xff0c;实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 #include <STC89C5xRC.H> void main() { // P20xFE;while(1){…

AI + 编程时代,飞算JavaAI如何引领行业趋势变革

在当今科技飞速发展的浪潮下&#xff0c;AI 与编程的深度融合已成为不可阻挡的时代趋势&#xff0c;正重塑着各个行业的格局。在这场变革中&#xff0c;飞算JavaAI脱颖而出&#xff0c;凭借其卓越的特性和创新的理念&#xff0c;在 AI 编程领域展现出强大的引领力量&#xff0…

Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问

1. 在Linux服务器上部署DeepSeek模型 要在 Linux 上通过 Ollama 安装和使用模型&#xff0c;您可以按照以下步骤进行操作&#xff1a; 步骤 1&#xff1a;安装 Ollama 安装 Ollama&#xff1a; 使用以下命令安装 Ollama&#xff1a; curl -sSfL https://ollama.com/download.…

1-R语言概述

1.认识R语言 1.1 选择R语言的依据 免费的软件编程方便&#xff0c;语言灵活&#xff0c;图形功能强大优秀的内在帮助系统高质量、广泛的统计分析、数据挖掘平台国际上R语言已然是专业数据分析领域的标准 1.2 R的来源 ​ R是S语言的一种实现。S语言是由 AT&T贝尔实验室…