发布时间:2026/7/22 4:33:08
fastapi的三种传参方式 FastAPI 三种传参方式详解路径参数、查询参数与请求体参数路径参数Path Parameters路径参数是 URL 路径中的动态可变部分格式为/路由/{参数名}用于标识具体的资源如物品 ID、用户 ID。例如/books/{book_id}表示要查询特定 ID 的书籍信息。基础用法app.get(/users/{username}, summary字符串路径参数) def read_user(username: str): # str 类型注解可省略默认按字符串处理 return {username: username}使用装饰器app.get定义路由路径接口函数必须声明与路径参数同名的形参。高级校验Path 类当参数需要复杂校验时可导入Path类进行更精细的规则配置from fastapi import Path app.get(/items/{item_id}) def read_item( # Path 类参数ge(≥)、le(≤)、gt()、lt()、title、description 等 item_id: int Path( ge1, # 必须大于等于 1 le100, # 必须小于等于 100 title物品ID, # 参数标题显示在文档中 description物品的唯一标识范围 1-100, # 参数描述 aliasitem-id # 参数别名文档中显示的名称 ) ): return {item_id: item_id}通过Path类可实现按业务场景进行校验具体参数可查阅 FastAPI 源码。查询参数Query Parameters查询参数是 URL 中?后面的键值对组合格式为key1value1key2value2用于对资源进行筛选、分页、排序等辅助操作。例如/items?skip0limit10skip跳过条数、limit查询条数是查询参数/users?name张三age20name姓名、age年龄是查询参数高级校验Query 类查询参数同样支持类似Path的校验方式使用前需导入Queryfrom fastapi import Query通过Query类可实现对查询参数的多规则校验# Query 类型注解基础示例 from fastapi import FastAPI, Query import uvicorn app FastAPI(titleQuery 注解教程, version1.0.0) Query 注解限制 limit ≥ 1 且 ≤ 50添加详细描述 app.get(/items/advanced/, summaryQuery 注解基础示例) def read_items_advanced( # 核心语法参数名: 类型 Query(默认值, 校验规则/元数据) skip: int Query(0, ge0, description跳过条数不能为负数), limit: int Query(10, ge1, le50, description查询条数1-50 条) ): Query 注解分页接口 :param skip: 跳过条数≥0 :param limit: 查询条数1-50 :return: 分页结果 fake_items [{item_id: i, name: f物品{i}} for i in range(skip, skip limit)] return { code: 200, skip: skip, limit: limit, data: fake_items } if name main: uvicorn.run(main:app, host127.0.0.1, port8000, reloadTrue)请求体参数Request Body请求体参数用于传递大量、复杂、结构化的数据如 JSON、表单数据常用于 POST 或 PUT 请求。定义HTTP 请求的正文部分专门用于传递大量、复杂、结构化数据。核心场景创建资源如用户注册、更新资源如修改商品信息需要传递完整的资源数据。优势数据容量大、格式灵活支持 JSON / 表单 / 文件、传输安全配合 HTTPS。关键前提请求体与 HTTP 方法请求体通常与非查询类HTTP 方法配合使用符合 RESTful 规范POST创建资源如用户注册、新增商品→ 必用请求体PUT全量更新资源如修改商品所有信息→ 必用请求体PATCH部分更新资源如修改商品价格→ 常用请求体GET查询资源 → 禁止使用请求体不符合 HTTP 规范实现步骤1. 安装 Pydantic 依赖pip install pydantic2. 导入 BaseModel 和 Fieldfrom pydantic import BaseModel, Field3. 定义 Pydantic 模型例如定义一个用户登录接口的模型包含用户名和密码的校验规则from pydantic import BaseModel, Field class Login(BaseModel): username: str Field( ..., min_length3, max_length50, description用户名长度需在 3-50 字符之间, examplejohndoe ) password: str Field( ..., min_length6, description密码长度至少 6 位 )4. 在路由中使用模型from fastapi import APIRouter from app.models.user import User from app.schemas import Login router APIRouter(prefix/users, tags[用户管理]) router.post(/login) async def login(login: Login): user await User.get_or_none(usernamelogin.username, passwordlogin.password) if user is None: return {code: 400, message: 用户不存在} return {message: fHello {login.username}}5. 在交互式文档中测试接口启动服务后访问http://127.0.0.1:8000/docs即可在 FastAPI 自带的交互式文档页面测试接口。返回code: 200状态码和Hello admin即表示登录成功。

相关新闻

2026/7/20 18:26:20

终极foobar2000美化方案:3分钟打造专业音乐播放界面

终极foobar2000美化方案:3分钟打造专业音乐播放界面 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 你是否还在使用foobar2000那单调乏味、功能分散的默认界面?是否渴望拥有一…

2026/7/20 18:26:20

【笔记】FASTGA无参基因组比对快速上手

FastGA是一款开源的超快速双基因组比对工具,能在普通笔记本电脑上几分钟内完成10 Gbp级基因组的比对。一、下载与安装下载地址wget https://github.com/thegenemyers/FASTGA/archive/refs/tags/v1.5.zipwget https://github.com/thegenemyers/FASTGA/archive/refs…

2026/7/22 4:28:38

OpenClaw2026跨平台安装部署指南:从环境配置到生产实践

最近在尝试部署AI开发环境时,发现OpenClaw作为新兴的AI开发平台,其安装部署过程对新手来说存在不少挑战。网上资料分散且版本混乱,特别是针对不同操作系统的兼容性问题经常让人头疼。本文基于官方最新文档,整理了一套完整的OpenCl…

2026/7/22 4:28:38

Gitlab 任意文件读取漏洞(CVE-2016-9086)

GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,用于自托管的 Git 项目仓库。该漏洞源于程序在处理用户提供的文档时没有正确检查符号链接(软连接),导致目录遍历漏洞。攻击者可以利用该漏洞读取任意文件的内容。GitLab是一套…

2026/7/22 4:28:38

门头招牌工程全流程:勘察、设计、施工与验收

摘要 门头招牌升级并不是简单更换面板、重新排版或安装发光字,而是一项同时涉及视觉识别、结构连接、材料耐候、电气安全、防水排水、施工组织和后期运维的综合工程。 部分门头在完工初期外观正常,但经过日晒、雨淋、温差变化和长期通电后,逐…

2026/7/22 4:28:38

BERT与GPT架构差异及多模态预训练实践指南

1. 预训练范式的哲学分野:从单模态到多模态的认知跃迁2018年无疑是NLP领域的"大爆炸"时刻。当BERT和GPT几乎同时横空出世时,大多数人只看到了它们基于Transformer架构的表面相似性,却忽略了底层设计哲学的根本差异。我在实际工业场…

2026/7/22 4:23:38

嵌入式系统DMA与以太网交换实战:EDMA3与CPSW配置与调试指南

1. 项目概述:深入嵌入式系统的数据搬运与网络交换核心在嵌入式系统开发,尤其是涉及高速数据流处理的场景里,比如网络交换机、音视频网关或者工业控制设备,有两个核心模块的性能直接决定了整个系统的“底线”:一个是负责…

2026/7/20 6:33:00

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/22 0:02:17

抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具

抓包代理链路下的 TLS 指纹变化分析:为什么调试环境会影响访问结果 摘要 在网页调试、接口联调、自动化巡检和授权采集排查中,抓包是常见手段。但很多开发者会遇到一个现象:正常访问页面时没有问题,一进入抓包或代理调试环境&…

2026/7/22 0:02:17

微信QQ聊天记录误删恢复与备份方案全指南

1. 聊天记录误删的常见场景与恢复思路作为一名长期关注数据安全的技术博主,我处理过上百起聊天记录误删的求助案例。手机误操作、系统升级失败、设备损坏是三大常见诱因。上周就遇到用户更新微信时断电,导致近两年的工作群聊记录全部消失的极端案例。不同…

2026/7/22 0:02:17

2026最新8款个人AI编程免费工具深度实测

作为一名全栈独立开发者,我最近半年一直在折腾副业项目,每个月在AI编程工具上的订阅费算下来其实也不算便宜。作为个人开发者,我们追求的就是用最少的成本获得最高效的开发体验。TRAE 基础版免费,字节跳动出品的国内首款 AI 原生 …

2026/7/21 20:02:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…