fastapi的三种传参方式
📅 2026/7/22 7:47:26
👁️ 次浏览
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即表示登录成功。
终极foobar2000美化方案:3分钟打造专业音乐播放界面 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn
你是否还在使用foobar2000那单调乏味、功能分散的默认界面?是否渴望拥有一…
📅 2026/7/22 8:12:26
更多请点击:
https://intelliparadigm.com
第一章:Suno歌词生成紧急修复包:5分钟解决语义断裂、文化错位、意象空洞三大致命缺陷 Suno AI歌词生成器在高频调用中常暴露出三类结构性缺陷:上下文语义断裂(如“月光煮茶&…
📅 2026/7/22 8:20:23
dotnet-core-uninstall安全卸载实践:如何避免误删Visual Studio依赖组件 【免费下载链接】cli-lab A guided tool will be provided to enable the controlled clean up of a system such that only the desired versions of the Runtime and SDKs remain. 项目地…
📅 2026/7/22 9:46:16
1. 项目概述:为什么从Unity3D简单小游戏开始?如果你对游戏开发感兴趣,或者想快速验证一个创意,Unity3D的“简单小游戏项目”几乎是所有人的第一站。这听起来可能有点老生常谈,但它的价值恰恰在于此——门槛低、反馈快、…
📅 2026/7/23 1:21:51
1. 生成式AI的本质与核心突破生成式AI与传统AI模型的根本区别在于其创造性输出能力。2014年Ian Goodfellow提出的生成对抗网络(GAN)是首个里程碑,通过生成器与判别器的对抗训练实现数据生成。2017年Transformer架构的出现则彻底改变了技术路线,其自注意力…
📅 2026/7/23 1:21:51
1. 为什么需要静态反射在实际开发中,C 开发者经常需要实现结构体与 JSON、XML、二进制格式之间的序列化和反序列化。传统的做法是手动为每个字段编写序列化代码,例如:void to_json(json& j, const MyStruct& s) {j["name"]…
📅 2026/7/23 1:21:51
我是一名全栈独立开发者,接了一个 SaaS 协作平台的前端重构项目,近期一直在寻找高性价比的 AI 编程工具替代方案。作为多年 Cursor 用户,我深感每月 $20 的订阅成本对独立开发者来说并不算低,而且有时候遇到国内网络波动ÿ…
📅 2026/7/23 1:21:51
前言刷 LeetCode118 杨辉三角时,发现很多同学只会调用vector接口完成题目,却完全不懂vector底层内存模型、push_back扩容逻辑、二维vector存储结构。本文结合手写源码 杨辉三角实战,彻底吃透vector底层原理。一、vector 基础用法与初始化1. …
📅 2026/7/23 1:21:51
本文是Linux系统下讨论。注意,Linux和Unix有很多不同的地方,并且各个不同的Unix系统也有很多不同。
本文讨论对象:
ruid: real user id,即实际用户,也即当前登录的用户euid: effective user id, 即有效用…
📅 2026/7/23 1:20:51
更多请点击:
https://intelliparadigm.com
第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…
📅 2026/7/23 0:00:26
最近好多同行在群里问 geo s1230 到底值不值得买。说实话,这机器在二手市场挺火。但水很深,新手很容易踩雷。我干了十年设备维护,见过太多冤大头。今天不扯虚的,直接上干货。先说价格,心里得有底。目前成色不错的二手货,大概在一万二到一万五之间。如果低于八千,别犹豫,…
📅 2026/7/23 0:01:16
更多请点击:
https://codechina.net
第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现࿱…
📅 2026/7/23 0:01:26
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/23 1:06:38
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/23 1:06:38
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/23 1:06:38
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/22 7:05:39
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/22 17:06:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/22 5:05:32