当前位置: 首页 > article >正文

Jenkins 学习总结沾

先唠两句参数就像餐厅点单把API想象成一家餐厅的“后厨系统”。? 路径参数/dishes/{dish_id} - 好比你要点“宫保鸡丁”这道具体的菜它是菜单资源路径的一部分。查询参数/dishes?spicytruetypeSichuan - 好比你说“我要川菜要辣的”。这是对结果的筛选和描述不是特定资源。请求体 - 你递进去的详细订单包括要什么菜、口味、备注内容可以很复杂。Cookie / Header - 像是你的会员卡自动带身份或者你给服务员的口头特殊要求如“快点上”。搞清楚这个参数该放哪儿基本就对了一半。另一半在于怎么让后厨你的代码准确无误地理解这些“订单”。第一部分基础必知——路径与查询参数好咱们先来聊聊最常用的两个兄弟。路径参数锁定具体目标用来唯一标识一个资源。想象一下你要获取ID为42的用户信息路径就是 /users/42。from fastapi import FastAPIapp FastAPI()app.get(/items/{item_id})async def read_item(item_id: int): # FastAPI自动将路径中的item_id转换为intreturn {item_id: item_id}关键点参数类型声明如int至关重要FastAPI会据此自动进行类型转换和验证。如果你传个“abc”进来它会礼貌地返回一个错误而不是让你的代码崩溃。这里千万别学我当初偷懒所有参数都定义成字符串到函数内部再转换。结果就是错误处理代码散落一地调试起来想哭。查询参数提供筛选与选项它不是路径的一部分跟在?后面用连接。比如 /items/?skip0limit10。app.get(/items/)async def read_items(skip: int 0, limit: int 10):return {skip: skip, limit: limit}注意到 0和 10了吗这给了它们默认值让它们变成了可选参数。没有默认值的参数就是必选查询参数。官方文档虽然把查询参数讲得很简单但根据我们的线上经验对于复杂的分页过滤接口强烈建议用Pydantic模型来封装查询参数而不是把一长串参数都列在函数定义里维护起来简直是灾难。这个我们后面讲。? 第二部分进阶必备——参数验证与请求体接下来重点来了如何确保客人点的菜是合理的比如“宫保鸡丁”要求加“草莓”这得拦住。用Query、Path、Body等工具精细控制Fastapi提供了这些“工具函数”让你能对参数进行更多描述。from fastapi import Query, Pathapp.get(/items/{item_id})async def read_items(item_id: int Path(..., title商品ID, ge1), # ...表示无默认值必填。ge1表示大于等于1q: str Query(None, min_length3, max_length50), # 可选参数None是默认值size: float Query(1.0, gt0, lt10) # 可选必须大于0小于10):return {item_id: item_id, q: q, size: size}踩坑提醒当同一个参数既可能是路径参数又可能是查询参数时虽然设计上应避免FastAPI默认会认为是查询参数。你必须显式使用Path来声明它是路径参数。请求体Body处理复杂数据当数据复杂时比如创建一篇博客文章就用请求体通常是POST/PUT。核心工具Pydantic模型。这简直是FastAPI的“王牌搭档”数据验证和序列化的神器。from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str | None Noneprice: floattax: float | None Noneapp.post(/items/)async def create_item(item: Item): # FastAPI会自动从请求体中识别itemreturn item你可能会问多个参数混着来怎么办比如路径参数、查询参数和请求体模型一起放心FastAPI智能到令人发指。它会自动识别1 参数在路径中或Path()声明 - 路径参数2 单数类型int, str等且有/无默认值(必填/非必填)或Query()声明等不在路径中 - 查询参数3 Pydantic模型类型 - 请求体app.put(/items/{item_id})async def update_item(item_id: int, # 路径参数q: str | None None, # 可选查询参数item: Item, # 请求体user: User # 第二个请求体FastAPI会自动处理为多个请求体参数):return {item_id: item_id, q: q, item: item, user: user}再说个容易翻车的点嵌套模型与复杂验证Pydantic模型可以嵌套用来描述复杂数据结构比如订单里有商品列表每个商品又有自己的属性。class Image(BaseModel):url: strname: strclass Item(BaseModel):name: strprice: floattags: list[str] [] # 字符串列表image: Image | None None # 嵌套模型app.post(/items/)async def create_item(item: Item):return item这个工具的选择好比选螺丝刀不是最贵的就好而是最趁手的。Pydantic就是FastAPI生态里最趁手的那把“瑞士军刀”字段类型、默认值、自定义验证器validator一套全齐。第三部分扩展知识——Cookie、Header与其他是不是以为这样就完了餐厅点单还有会员卡和特殊要求呢Cookie 和 Header 参数它们通常用于元数据、身份认证等不直接作为业务参数。在FastAPI中获取它们非常方便。from fastapi import Cookie, Headerapp.get(/)async def read_header_cookie(user_agent: str | None Header(None),session_token: str | None Cookie(None)):return {user_agent: user_agent, session_token: session_token}注意Header会自动将参数名中的下划线_转换为连字符-。比如user_agent会读取User-Agent这个请求头且不区分大小写哦。如果请求头本身就有连字符直接用Header(..., alias...)指定别名。表单数据Form和文件上传File当需要接收HTML表单提交的数据或上传文件时使用。from fastapi import Form, File, UploadFileapp.post(/login/)async def login(username: str Form(...), password: str Form(...)):return {username: username}app.post(/upload/)async def upload_file(file: UploadFile File(...)):content await file.read()return {filename: file.filename, size: len(content)}最后啰嗦一句File和Form参数不能与纯JSON的Body模型混用它们是不同的编码格式。接收文件记得用异步读写大文件更要流式处理别一股脑读到内存里。? 总结与一张速查表好了咱们今天把FastAPI的参数系统彻底捋了一遍。最后送你一张我总结的“参数安置决策表”下次设计接口时拿出来看一眼保准不迷糊路径参数Path用于唯一指定资源。如/users/{id}查询参数Query用于过滤、排序、分页资源列表。如/users?roleadminpage2请求体Body用于创建或更新资源复杂数据。用Pydantic模型。Cookie用于自动携带的会话或身份信息。Header用于元数据、内容协商、认证令牌等。表单Form用于接收HTML表单提交的键值对数据。文件File用于上传文件。蛔导蜗痛

相关文章:

Jenkins 学习总结沾

先唠两句:参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜,它是菜单(资源路径)的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…...

技术洞察:如何通过设备标识重置实现AI编程工具的持续高效使用

技术洞察:如何通过设备标识重置实现AI编程工具的持续高效使用 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request …...

OmenSuperHub:彻底解放你的惠普游戏本性能潜力

OmenSuperHub:彻底解放你的惠普游戏本性能潜力 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否厌倦了原厂Omen Gaming Hub的臃肿、强制联…...

镜像孪生系统总体技术方案白皮书——基于三维空间计算的全域视频智能感知与决策平台

镜像孪生系统总体技术方案白皮书——基于三维空间计算的全域视频智能感知与决策平台发布单位:镜像视界(浙江)科技有限公司 版本:V1.0 日期:2026年📌 摘要随着智慧城市、公共安全与数字政府建设的不断推进&a…...

打造沉浸式智能AI问答助手:Vue + UniApp 全端实战(支持 Markdown/公式/多模态交互)唇

OCP原则 ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则(DIP) 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程, 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

光伏三相并网:集成MPPT与SPWM调制的高效逆变系统

光伏三相并网: 1.光伏10kwMPPT控制两级式并网逆变器(boost三相桥式逆变) 2.坐标变换锁相环dq功率控制解耦控制电流内环电压外环控制spwm调制 3.LCL滤波 仿真结果: 1.逆变输出与三项380V电网同频同相 2.直流母线电压800V稳定 3.d轴…...

鸿蒙版微信APP总是收不到提醒?看看这两处设置是否正确

最近很多小伙伴反应升级了最新版的鸿蒙系统(鸿蒙5及以上版本),手机上的微信总是不提醒,导致一些消息不能第一时间获取。这可能是由于微信设置不正确导致的,本文从已知的2种情况分别阐述如何解决。一、检查微信的消息通…...

从F=ma到U(r,t)=P{Φ(r,t)⊛⊂M,Ctotal(t)}【能识此文者,必为大智也】

从Fma到U(r,t)P{Φ(r,t)⊛⊂M,Ctotal(t)}Authors: Haiting Allen ChenAffiliations: Chen Xiao’er Creative Workshop, Independent Researcher, Guangzhou, China.Corresponding Author:Name: Haiting Allen ChenEmails: mailto: OFIRMCSIoutlook.com ; OFIRM_…...

OFIRM,去感受宇宙之美的全貌!

奥卡姆剃刀,不增一分冗余;狄拉克,极致极简美学;我,多一个符号都是罪过!多一个单词都是对宇宙之神的亵渎。【宇宙之美,大道至简,原来如此!U(r,t)P{Φ(r,t)⊛⊂M,Ctotal(t)…...

记录复现多模态大模型论文OPERA的一周工作翰

一、简化查询 1. 先看一下查询的例子 /// /// 账户获取服务 /// /// /// public class AccountGetService(AccountTable table, IShadowBuilder builder) {private readonly SqlSource _source new(builder.DataSource);private readonly IParamQuery _accountQuery build…...

中国如何用特高压技术破解“能源不可能三角”?

以前我总以为,能源这事儿就是个死结:想要便宜就不能清洁,想要稳定就得烧煤,想要环保就得忍受高价。直到我了解了中国的特高压技术,才明白“能源不可能三角”真的能被打破。先说说这技术有多牛。1100千伏准东到皖南工程…...

NAS 入门两年,聊聊我的踩坑心得

折腾 NAS 两年后,我最大的感受是:别急着买贵的,先想清楚自己到底需要什么。 刚入坑时,我什么都不懂,第一台直接买了四千多的群晖。后来才发现,自己平时真正用得最多的,其实就是文件存取、影音播…...

PowerToys MeasureTool:让屏幕测量变得如此简单,设计师必备的免费神器

PowerToys MeasureTool:让屏幕测量变得如此简单,设计师必备的免费神器 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/Gi…...

如何在唐山挑选性价比高的二手房步梯房随着城市化进程的加快,越来越多的人选择购买二手房作为自己的居所。特别是在像唐山这样的城市里,由于其地理位置优越、经济发展迅速,二手房市场更是受到了不少购房者的青

随着城市化进程的加快,越来越多的人选择购买二手房作为自己的居所。特别是在像唐山这样的城市里,由于其地理位置优越、经济发展迅速,二手房市场更是受到了不少购房者的青睐。然而,在众多房源中挑选出既适合自己又具有高性价比的房…...

SDMatte辅助UI/UX设计:从真实界面截图快速提取设计组件库

SDMatte辅助UI/UX设计:从真实界面截图快速提取设计组件库 1. 设计师的日常痛点 每个UI设计师都经历过这样的场景:在浏览优秀App或网站时,突然发现一个特别棒的按钮设计、一个精致的卡片布局,或者一组优雅的图标。你本能地截图保…...

从“工具箱”到“数字伙伴”:Hermes Agent与OpenClaw,谁是你的菜?

AI智能体(AI Agent)领域在2026年迎来了两位重量级选手:一位是生态庞大、连接能力超强的“老大哥”OpenClaw,另一位则是势头迅猛、主打自我进化的“新贵”Hermes Agent。它们代表了两种截然不同的设计哲学,也让许多开发…...

USB HID设备报告描述符深度解析——利用WCH_USB2.0Monitor剖析鼠标数据流

1. 从点击到数据:USB鼠标如何与电脑对话 当你移动鼠标时,光标会跟着动;点击按钮时,程序会响应——这看似简单的操作背后,隐藏着一套精密的通信协议。USB HID(Human Interface Device)设备通过报…...

终极指南:如何免费解锁Cursor Pro高级功能完整教程

终极指南:如何免费解锁Cursor Pro高级功能完整教程 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial …...

阿里云盘Refresh Token获取工具使用指南:轻松实现云盘授权与自动化管理

阿里云盘Refresh Token获取工具使用指南:轻松实现云盘授权与自动化管理 【免费下载链接】aliyundriver-refresh-token QR Code扫码获取阿里云盘refresh token For Web 项目地址: https://gitcode.com/gh_mirrors/al/aliyundriver-refresh-token 在云存储管理…...

8大网盘直链解析终极指南:免费解锁5倍下载速度的完整解决方案

8大网盘直链解析终极指南:免费解锁5倍下载速度的完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘…...

OpenTAP硬件集成测试优势解析

OpenTAP 之所以在硬件和系统集成测试领域表现出色,主要得益于其独特的设计理念、灵活的架构以及强大的社区生态支持。以下将从核心架构、技术优势、应用场景和具体实施案例等多个维度进行详细阐述。 一、 核心架构与设计理念 OpenTAP 基于 .NET 平台构建&#xff…...

在超大数据集下 DuckDB 与 MySQL 查询速度对比排

一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…...

打字不如说话,说话不如截图——AI 代码助手的多模态输入实践不

整体排查思路 我们的目标是验证以下三个环节是否正常: 登录成功时:服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端:浏览器是否成功接收并存储了该Cookie。 后续请求:浏览器在执行查询等操作…...

如何查询SQL中长度超过阈值的文本_使用LENGTH函数过滤

MySQL中LENGTH()返回字节数而非字符数,utf8mb4下汉字占3-4字节,需用CHAR_LENGTH()按字符过滤;PostgreSQL中LENGTH()按字符计,OCTET_LENGTH()才按字节;SQL Server用LEN()和DATALENGTH()区分字符与字节。MySQL里用LENGTH…...

MySQL数据库用户密码加密存储机制_Authentication Plugin配置

MySQL 8.0默认使用caching_sha2_password插件加密密码,采用SHA-256加盐哈希并缓存认证状态;旧客户端因不兼容该插件而无法连接,需通过ALTER USER切换为mysql_native_password或配置default_authentication_plugin。MySQL 8.0 默认用 caching_…...

番茄小说下载器:5种格式批量下载与Web界面管理完全指南

番茄小说下载器:5种格式批量下载与Web界面管理完全指南 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 番茄小说下载器是一个功能强大的开源工具,专为小说爱好者和技…...

ARM 架构 JuiceFS 性能优化:基于 MLPerf 的实践与调优阑

Qt是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...

我让 Claude 和 Codex 同时审计 个模块,它们只在 个上达成共识犊

整体排查思路 我们的目标是验证以下三个环节是否正常: 登录成功时:服务器是否正确生成了Session并返回了包含正确 JSESSIONID的Cookie给浏览器。 浏览器端:浏览器是否成功接收并存储了该Cookie。 后续请求:浏览器在执行查询等操作…...

使用钉钉远程操作你的claude code拘

先回顾:三次握手(建立连接)核心流程(实际版) 为了让挥手流程衔接更顺畅,咱们先快速回顾三次握手的实际核心,避免上下文脱节: 第一步(客户端→服务器)&#xf…...

蓝桥杯单片机组——榨干选手资源包(STC)

文章目录前言巧用STCSTC生成定时器STC配置定时器(定时器中断)定时器定时器中断STC获取数码管码表STC上升沿下降沿检测其他总结目录前言 笔者参加的是第十一届蓝桥杯的单片机组,当时由于疫情,比赛一直推迟,推到最后还和…...