fastapi中的patch请求
目录
- 示例
- 测试
- 使用 `curl` 访问:
- 使用 `requests` 访问:
- 预期返回:
- 浏览器访问
示例
下面是一个使用 @app.patch("") 的 FastAPI 示例,该示例实现了一个简单的用户信息更新 API。我们使用 pydantic 定义数据模型,并使用 patch 方法部分更新用户信息。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
from typing import Optionalapp = FastAPI()# 模拟的用户数据
users_db = {1: {"name": "Alice", "age": 25, "email": "alice@example.com"},2: {"name": "Bob", "age": 30, "email": "bob@example.com"},
}# 请求模型,所有字段都是可选的
class UserUpdate(BaseModel):name: Optional[str] = Field(None, title="用户名")age: Optional[int] = Field(None, title="年龄", ge=0)email: Optional[str] = Field(None, title="邮箱")@app.patch("/users/{user_id}")
def update_user(user_id: int, user_update: UserUpdate):if user_id not in users_db:raise HTTPException(status_code=404, detail="User not found")# 更新用户信息existing_user = users_db[user_id]update_data = user_update.dict(exclude_unset=True) # 仅获取传入的字段existing_user.update(update_data)return {"message": "User updated successfully", "user": existing_user}
这个示例:
- 维护了一个
users_db作为模拟数据库。 - 使用
@app.patch("/users/{user_id}")处理用户信息的部分更新。 - 通过
exclude_unset=True确保只更新请求体中提供的字段,而不会覆盖未提供的字段。
你可以运行它,并使用 PATCH 请求测试,例如:
{"name": "Charlie"
}
这将只更新用户的 name,而不会修改 age 或 email。
测试
你可以使用 curl、httpx 或者 requests 来访问 PATCH 端点。下面是一个示例:
使用 curl 访问:
curl -X PATCH "http://127.0.0.1:8000/users/1" \-H "Content-Type: application/json" \-d '{"name": "Charlie", "age": 28}'
这个请求会更新 id=1 的用户,将 name 改为 "Charlie",并将 age 改为 28。
使用 requests 访问:
如果你在 Python 代码中调用,可以这样做:
import requestsurl = "http://127.0.0.1:8000/users/1"
payload = {"name": "Charlie", "age": 28}
headers = {"Content-Type": "application/json"}response = requests.patch(url, json=payload, headers=headers)print(response.json()) # 输出更新后的用户信息
预期返回:
{"message": "User updated successfully","user": {"name": "Charlie","age": 28,"email": "alice@example.com"}
}
可以看到,name 和 age 被成功更新,而 email 仍然保持原值。
你可以修改 payload 只提供部分字段,例如 {"email": "charlie@example.com"},就只会更新 email,其他字段不会改变。
另外,你可以在浏览器中访问 FastAPI 的 Swagger UI 或 Redoc 来测试 PATCH 请求,但 不能直接在地址栏访问,因为浏览器的地址栏只能发送 GET 请求,而 PATCH 请求需要使用 API 测试工具或 JavaScript 代码。
浏览器访问
FastAPI 自带了交互式文档,你可以在浏览器中打开:
- Swagger UI: http://127.0.0.1:8000/docs
- Redoc: http://127.0.0.1:8000/redoc
步骤:
- 启动 FastAPI 服务器(运行
uvicorn)。 - 在浏览器打开
http://127.0.0.1:8000/docs。 - 找到
PATCH /users/{user_id}端点,点击 “Try it out”。 - 输入
user_id,在Request body里填入 JSON,例如:{"name": "Charlie","age": 28 } - 点击 “Execute” 发送请求,查看响应结果。


相关文章:
fastapi中的patch请求
目录 示例测试使用 curl 访问:使用 requests 访问:预期返回: 浏览器访问 示例 下面是一个使用 app.patch("") 的 FastAPI 示例,该示例实现了一个简单的用户信息更新 API。我们使用 pydantic 定义数据模型,并…...
系统架构设计师—计算机基础篇—计算机网络
文章目录 网络互联模型网络协议与标准应用层协议FTP协议TFTP协议 HTTP协议HTTPS协议 DHCP动态主机配置协议DNS协议迭代查询递归查询 传输层协议网络层协议IPV4协议IPV6协议IPV6数据报的目的地址IPV4到IPV6的过渡技术 网络设计分层设计接入层汇聚层核心层 网络布线综合布线系统工…...
MATLAB中asManyOfPattern函数用法
目录 语法 说明 示例 匹配尽可能多的模式实例 指定要匹配的最小模式数 指定要匹配的最小和最大模式数 asManyOfPattern函数的功能是模式匹配次数尽可能多。 语法 newpat asManyOfPattern(pat) newpat asManyOfPattern(pat,minPattern) newpat asManyOfPattern(pat,m…...
Kafka面试题及原理
1. 消息可靠性(不丢失) 使用Kafka在消息的收发过程都会出现消息丢失,Kafka分别给出了解决方案 生产者发送消息到Brocker丢失消息在Brocker中存储丢失消费者从Brocker 幂等方案:【分布式锁、数据库锁(悲观锁、乐观锁…...
Grok 3 AI 角色扮演提示词 化身顶级设计师
Grok 3:设计下一个大型软件项目的终极工具 🔥 Grok 3 是一个革命性的工具,能够在短短 一小时 内,帮助你完成软件项目设计中最关键的步骤。无论是创建用户画像、设计网站地图,还是编写用户故事及验收标准,G…...
从零开始设计一个完整的网站:HTML、CSS、PHP、MySQL 和 JavaScript 实战教程
前言 本文将从实战角度出发,带你一步步设计一个完整的网站。我们将从 静态网页 开始,然后加入 动态功能(使用 PHP),连接 数据库,最后加入 JavaScript 实现交互功能。通过这个教程,你将掌握一个…...
CSS 对齐:深入理解与技巧实践
CSS 对齐:深入理解与技巧实践 引言 在网页设计中,元素的对齐是至关重要的。一个页面中元素的对齐方式直接影响到页面的美观度和用户体验。CSS 提供了丰富的对齐属性,使得开发者可以轻松实现各种对齐效果。本文将深入探讨 CSS 对齐的原理、方法和技巧,帮助开发者更好地掌握…...
oracle游标为什么没有共享,统计一下原因
-- Script Code为什么没共享 define sql_id bs391f0yq5tpw;set serveroutput onDECLAREv_count number;v_sql varchar2(500);v_sql_id varchar2(30) : &sql_id; BEGINv_sql_id : lower(v_sql_id);dbms_output.put_line(chr(13)||chr(10));dbms_output.put_line(sql_id: ||…...
IDEA中.gitignore未忽略指定文件的问题排查与解决
IDEA 中.gitignore 未忽略.env 文件的问题排查与解决 在使用 IntelliJ IDEA 进行项目开发时,合理利用.gitignore文件来管理版本控制是非常重要的。它能帮助我们排除一些不需要纳入版本管理的文件,比如包含敏感信息的.env文件。然而,有时我们会遇到一种情况:明明已经将.env…...
通往 AI 之路:Python 机器学习入门-语法基础
第一章 Python 语法基础 Python 是一种简单易学的编程语言,广泛用于数据分析、机器学习和人工智能领域。在学习机器学习之前,我们需要先掌握 Python 的基本语法。本章将介绍 Python 的变量与数据类型、条件语句、循环、函数以及文件操作,帮助…...
形象生动讲解Linux 虚拟化 I/O
用现实生活的比喻和简单例子来解释 Linux 虚拟化 I/O,就像给朋友讲故事一样。 虚拟化 I/O 要解决什么问题? 想象你有一栋大房子(物理服务器),想把它分割成多个小公寓(虚拟机)出租。每个租客&…...
6. Nginx 动静分离配置案例(附有详细说明+配图)
6. Nginx 动静分离配置案例(附有详细说明配图) 文章目录 6. Nginx 动静分离配置案例(附有详细说明配图)1. 动静分离概述说明2. 先使用传统方式实现,不使用 Nginx3. 使用上 Nginx 实现动静分离优化步骤4. 最后: 1. 动静分离概述说明 什么是动静分离&…...
数据集笔记:新加坡停车费
data.gov.sg 该数据集包含 新加坡各停车场的停车费,具体信息包括: 停车场名称(Carpark):如 Toa Payoh Lorong 8、Ang Mo Kio Hub、Bras Basah Complex 等。停车区域类别(Category):…...
SQL经典题型
查询不在表里的数据,一张学生表,一张学生的选课表,要求查出没有选课的学生? select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…...
最新Java面试题,常见面试题及答案汇总
Java最新常见面试题 答案汇总 原文地址:https://blog.csdn.net/sufu1065/article/details/88051083 1、面试题模块汇总 面试题包括以下十九个模块: Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC…...
学习第九天-栈
栈的定义:栈是一种线性表数据结构,仅允许在表的一端(栈顶)进行插入(入栈)和删除(出栈)操作。没有数据元素时为「空栈」,遵循「后进先出(LIFO)」原…...
Java基础关键_016_System 类
目 录 一、常用属性 1.static final PrintStream err 2.static final InputStream in 3.static final PrintStream out 二、常用方法 1.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 2.currentTimeMillis() 3.nanoTime() 4. exit(int st…...
计算机毕设JAVA——某高校宿舍管理系统(基于SpringBoot+Vue前后端分离的项目)
文章目录 概要项目演示图片系统架构技术运行环境系统功能简介 概要 网络上许多计算机毕设项目开发前端界面设计复杂、不美观,而且功能结构十分单一,存在很多雷同的项目:不同的项目基本上就是套用固定模板,换个颜色、改个文字&…...
【 实战案例篇三】【某金融信息系统项目管理案例分析】
大家好,今天咱们来聊聊金融行业的信息系统项目管理。这个话题听起来可能有点专业,但别担心,我会尽量用大白话给大家讲清楚。金融行业的信息系统项目管理,说白了就是如何高效地管理那些复杂的IT项目,确保它们按时、按预算、按质量完成。咱们今天不仅会聊到一些理论,还会通…...
vivado 避免本地时钟、创建输出时钟
避免本地时钟 本地时钟是使用常规结构资源而不是专用全局时钟资源进行布线的时钟网络。在大多数情况下, Vivado 综合和 Vivado 逻辑优化工具在架构要求的时钟缓存或具有超过 30 个时钟负载的时钟网络中插入时钟缓存。本地时钟通常发生在: • 全局时…...
SEO最常用的工具有哪些_新手SEO如何选择工具
SEO最常用的工具有哪些?新手SEO如何选择工具 在当今的数字化时代,SEO(搜索引擎优化)已成为提升网站流量和品牌知名度的关键手段。作为新手SEO,你可能会遇到一个重要的问题:SEO最常用的工具有哪些ÿ…...
Qwen3.5-9B-AWQ-4bit效果对比:不同温度值(0.0/0.7/1.2)对图片摘要质量影响分析
Qwen3.5-9B-AWQ-4bit效果对比:不同温度值(0.0/0.7/1.2)对图片摘要质量影响分析 1. 引言 在视觉理解任务中,温度参数(temperature)是影响模型输出质量的关键因素之一。本文将通过实际测试,展示…...
VideoAgentTrek-ScreenFilter开发环境配置:从零开始搭建Java调用示例
VideoAgentTrek-ScreenFilter开发环境配置:从零开始搭建Java调用示例 如果你是一名Java开发者,最近听说了VideoAgentTrek-ScreenFilter这个视频处理服务,想在自己的项目里试试看,但不知道从哪儿下手,那这篇文章就是为…...
如何高效实现金融核心系统客户证件影像预览?kkFileView完整解决方案
如何高效实现金融核心系统客户证件影像预览?kkFileView完整解决方案 【免费下载链接】kkFileView Universal File Online Preview Project based on Spring-Boot 项目地址: https://gitcode.com/GitHub_Trending/kk/kkFileView 在金融行业日常运营中…...
OFA-VQA镜像可解释性增强:Grad-CAM热力图可视化答案依据区域
OFA-VQA镜像可解释性增强:Grad-CAM热力图可视化答案依据区域 1. 引言:为什么需要可视化VQA模型的决策依据? 当我们使用视觉问答(VQA)模型时,经常会遇到一个关键问题:模型给出的答案真的可靠吗…...
别再自己造轮子了!用DJI Pilot 2 + 上云API,30分钟搞定无人机数据上云
30分钟极速对接:用DJI Pilot 2与上云API实现无人机数据云端整合 在智慧城市巡检或应急指挥场景中,实时获取无人机航拍画面与飞行数据往往是业务闭环的关键。传统方案需要投入数月时间开发定制化App,而大疆最新推出的上云API方案,让…...
Phi-4-mini-reasoning vLLM部署避坑指南:日志排查、加载失败诊断与修复步骤
Phi-4-mini-reasoning vLLM部署避坑指南:日志排查、加载失败诊断与修复步骤 1. 模型简介与环境准备 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据,并进一步微调以提高更高级的数学推理能力。…...
交通流预测代码复现:提出了一种创新的时间感知结构-语义耦合图网络,旨在解决图学习中的困难问题
交通流预测代码复现:提出了一种创新的时间感知结构-语义耦合图网络,旨在解决图学习中的困难问题 [1]我们设计了新的图学习块,能够同时学习图的结构和语义方面,从而捕获图的固有特征 [2]我们还引入了自采样方法,对相关的…...
6 鸿蒙应用启动速度优化全流程拆解 | 鸿蒙开发筑基实战
6 鸿蒙应用启动速度优化全流程拆解 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 摘要 本文面向鸿蒙应用开发工程师,聚焦应用启动慢、首屏白屏等核心痛点,拆解从代码配置到资源处理的全流程优化方案。内容包含启动流…...
Linux中以其它用户身份执行脚本或命令的全总结
Linux中以其他用户身份执行命令或脚本是一个常见的需求,最近工作中碰到了这个需求,在这里简单总结一下.假如我们在root用户下想以其它用户(例如oracle,mysql)身份执行一些脚本或命令,那么有哪一些方法呢?su命令(switch user)su命令的使用方式有两种, 如下所示:切换用户只执行一…...
