当前位置: 首页 > 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 -> 好比…...

阅读《人月神话》与《代码大全》在2024年的新感悟

重读经典:2024年技术书籍的新启示 在AI重构软件开发的2024年,重读《人月神话》与《代码大全》这两本软件工程经典,竟有了超越时代的共鸣。布鲁克斯关于"没有银弹"的论断与麦康奈尔对代码质量的执着,在低代码平台和生成…...

Python的类方法与静态方法在面向对象设计中的职责划分原则

Python作为一门多范式编程语言,其面向对象特性中的类方法与静态方法常引发开发者对职责划分的思考。这两种方法看似相似,实则承载着不同的设计意图。理解它们的核心差异,能帮助开发者写出更符合对象职责、更易维护的代码。本文将深入探讨类方…...

Coze工作流实战:5分钟搞定AI智能试卷生成(附完整提示词模板)

Coze工作流实战:5分钟打造智能试卷生成系统 每次备课最头疼的就是出试卷?作为一线教师,我完全理解那种面对空白文档的焦虑。去年期末,我曾在凌晨三点还在手动编排选择题选项,直到发现了Coze工作流这个神器。今天要分享…...

漏洞扫描器:常见漏洞模式的自动化检测

漏洞扫描器:常见漏洞模式的自动化检测 在当今数字化时代,网络安全问题日益突出,企业和个人面临着来自黑客、恶意软件等各类威胁。漏洞扫描器作为一种自动化工具,能够高效检测系统中存在的常见漏洞模式,帮助用户提前发…...

从像素到现实:5分钟搞懂OpenCV中的坐标系转换(附Python代码)

从像素到现实:5分钟搞懂OpenCV中的坐标系转换(附Python代码) 当你用手机拍下一张照片时,屏幕上那些彩色的像素点其实对应着现实世界中的三维物体。这种从二维图像到三维空间的映射关系,正是计算机视觉中最基础也最重要…...

Ubuntu20.04 安装 MATLAB R2023b 常见问题及解决方案

1. Ubuntu20.04安装MATLAB R2023b完整指南 最近在Ubuntu20.04上折腾MATLAB R2023b的安装,发现整个过程比想象中要复杂一些。网上的教程大多比较零散,而且很多是针对老版本的解决方案。经过几天的实践和踩坑,我整理出了这份详细的安装指南&…...

TCP/IP协议详解:高性能服务器开发的底层基石恫

1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级)&#xf…...

wso~.升级到.需要更新的数据表允

1. 架构背景与演进动力 1.1 从单体到碎片化:.NET 的开源征程 在.NET Framework 时代,构建系统主要围绕 Windows 操作系统紧密集成,采用传统的封闭式开发模式。然而,随着.NET Core 的推出,微软开启了彻底的开源与跨平台…...

Linux内核与驱动:9.驱动中的中断机制

在 Linux 设备驱动开发中,中断处理是一个必须掌握的核心知识点。相比于轮询方式持续查询硬件状态,中断机制让驱动程序能够“按需响应”,即只有当硬件真正有事件需要处理时,CPU 才会被通知并执行相应的处理代码,从而大幅…...

SpringCloud进阶--Seata与分布式事务和

起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧&#xff…...

移动性能监控区块链隐私

移动性能监控区块链隐私:守护数字世界的安全与效率 在移动互联网与区块链技术深度融合的今天,移动性能监控与区块链隐私保护成为两大关键议题。移动应用的高效运行离不开性能监控,而区块链的匿名性与隐私性又为数据安全提出了新挑战。如何在…...

Qwen3.5-2B开源模型应用:支持国产昇腾910B芯片适配与CANN环境部署

Qwen3.5-2B开源模型应用:支持国产昇腾910B芯片适配与CANN环境部署 1. 模型概述 Qwen3.5-2B是通义千问系列最新推出的轻量化多模态基础模型,作为20亿参数规模的"小钢炮"版本,它在保持强大能力的同时,特别注重低功耗和低…...

掌握类人记忆,解锁AI大模型潜力:小白也能轻松收藏学习!

AI智能体(Agent)的热度不减,然而许多Agent系统都有一个共同的痛点就是“健忘症”,尤其是上下文过长时,更为明显。这种缺乏长期、连贯记忆的能力,极大地限制了AI智能体的潜力和用户体验。它们很难真正理解用…...

RWKV7-1.5B-G1A自动化运维实践:基于Agent的模型服务监控与维护

RWKV7-1.5B-G1A自动化运维实践:基于Agent的模型服务监控与维护 1. 引言:当大模型遇上运维自动化 最近在星图GPU平台上部署RWKV7-1.5B-G1A模型时,我发现一个有趣的现象:虽然模型推理能力很强,但运维工作却意外地消耗了…...

收藏!小白程序员必看:轻松入门AI大模型,打造你的智能体(附学习资料)

AI智能体的概念不用多说,简单理解是由“大脑 手”组成,“大脑”不单单指大模型,但核心一定是大模型,可以理解成具备分析思考能力的指挥官,负责掌控全局和发号施令;而“手”好理解一些,就是负责…...

阿里通义Z-Image-GGUF体验:中英文提示词生成精美图片实测

阿里通义Z-Image-GGUF体验:中英文提示词生成精美图片实测 1. 模型概述与特点 1.1 什么是Z-Image-GGUF Z-Image-GGUF是阿里巴巴通义实验室开源的一款文生图AI模型,基于GGUF量化技术优化,能够在较低显存环境下实现高质量的图像生成。该模型支…...

龙芯k - 走马观碑组ST驱动移植纳

正文 异步/等待解决了什么问题? 在传统同步I/O操作中(如文件读取或Web API调用),调用线程会被阻塞直到操作完成。这在UI应用中会导致界面冻结,在服务器应用中则造成线程资源的浪费。async/await通过非阻塞的异步操作解…...

2026-04-12 全国各地响应最快的 BT Tracker 服务器(联通版)

数据来源:https://bt.me88.top 序号Tracker 服务器地域网络响应(毫秒)1http://211.75.205.187:80/announce上海联通192udp://211.75.205.189:6969/announce江西南昌联通293udp://132.226.6.145:6969/announce北京联通614udp://185.216.179.62:25/announce北京联通1…...

2026年04月11日最热门的开源项目(Github)

根据提供的榜单,这里是对各个项目的分析和趋势观察: 1. 热门语言分析 Python 是榜单中最常用的编程语言(例如:NousResearch/hermes-agent, microsoft/markitdown, OpenBMB/VoxCPM等),显示出Python在开发代…...

我用 AI 辅助开发了一系列小工具():文件提取工具窝

从0构建WAV文件:读懂计算机文件的本质 虽然接触计算机有一段时间了,但是我的视野一直局限于一个较小的范围之内,往往只能看到于算法竞赛相关的内容,计算机各种文件在我看来十分复杂,认为构建他们并能达到目的是一件困难…...

代码之外周刊(第期):当技术让一切趋同,我们还剩什么?揽

1. 前言 本文详细介绍如何使用 kylin v10 iso 文件构建出 docker image,docker 版本为 20.10.7。 2. 构建 yum 离线源 2.1. 挂载 ISO 文件 mount Kylin-Server-V10-GFB-Release-030-ARM64.iso /media 2.2. 添加离线 repo 文件 在/etc/yum.repos.d/下创建kylin-local…...

使用 C# 删除 PDF 中的数字签名票

一、 什么是 AI Skills:从工具级到框架级的演化 AI Skills(AI 技能) 的概念最早在 Claude Code 等前沿 Agent 实践中被强化。最初,Skills 被视为“工具级”的增强,如简单的文件读写或终端操作,方便用户快速…...

拆穿名词诈骗!用大白话理解晦涩难懂的AI概念怂

1. 架构背景与演进动力 1.1 从单体到碎片化:.NET 的开源征程 在.NET Framework 时代,构建系统主要围绕 Windows 操作系统紧密集成,采用传统的封闭式开发模式。然而,随着.NET Core 的推出,微软开启了彻底的开源与跨平台…...

【大模型工程化评估黄金标准】:20年AI架构师首次公开7大核心指标与落地避坑指南

第一章:大模型工程化评估指标体系构建指南 2026奇点智能技术大会(https://ml-summit.org) 构建面向生产环境的大模型评估指标体系,需兼顾模型能力、系统性能、业务适配性与合规可持续性四大维度。脱离工程落地场景的纯学术指标(如零样本准确…...

再次革新 .NET 的构建和发布方式(一)氨

本文能帮你解决什么? 1. 搞懂FastAPI异步(async/await)到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑(比如阻塞操作、数据库连接池耗尽、GIL限制)。 …...

AI开发-python-langchain框架(--AI 直接生成并执行 Python 代码 )诎

指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...

手把手教你用Cartographer在Gazebo中实现室内导航:Ubuntu20.04详细教程

从零构建Gazebo室内导航系统:Cartographer在Ubuntu20.04的实战指南 当我们需要测试机器人导航算法时,直接使用实体机器人不仅成本高昂,还存在安全风险。Gazebo仿真环境配合Cartographer算法,为开发者提供了一个完美的室内导航解决…...

【大模型】Timer模型微调实战:从零到一构建电力负荷预测系统

1. Timer模型与电力负荷预测的完美结合 电力负荷预测是能源管理中的核心问题,准确预测未来用电量对电网调度、发电计划制定至关重要。传统方法如ARIMA、Prophet在处理复杂时序模式时往往力不从心,而大模型时代的到来为这一领域带来了全新解决方案。 Time…...

ESP居然能当 DNS 服务器用?内含NCSI欺骗和DNS劫持实现们

前言 Kubernetes 本身并不复杂,是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps,这些基础组件简单直接,甚至显得有些枯燥。但后来我…...