fastapi PUT更新数据 / PATCH部分更新

文章目录

    • 1. PUT 更新
    • 2. 用 PATCH 进行部分更新

learn from https://fastapi.tiangolo.com/zh/tutorial/body-updates/

1. PUT 更新

  • 注意,put 没有指定的值,会被重置为默认值
from typing import List, Optionalfrom fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: Optional[str] = Nonedescription: Optional[str] = Noneprice: Optional[float] = Nonetax: float = 10.5tags: List[str] = []items = {"foo": {"name": "Foo", "price": 50.2},"bar": {"name": "Bar", "description": "The bartenders", "price": 62, "tax": 20.2},"baz": {"name": "Baz", "description": None, "price": 50.2, "tax": 10.5, "tags": []},
}@app.get("/items/{item_id}", response_model=Item)
async def read_item(item_id: str):return items[item_id]@app.put("/items/{item_id}")
async def update_item(item_id: str, item: Item):update_item_encoded = jsonable_encoder(item)items[item_id] = update_item_encodedreturn jsonable_encoder(items)

在这里插入图片描述

2. 用 PATCH 进行部分更新

  • 只发送 要更新的数据,其余数据保持不变
  • 可以在 Pydantic 模型的 .dict() 中使用 exclude_unset 参数:排除没有设置的参数(默认值的参数)
  • .copy() 为已有模型创建副本,调用 update 参数更新数据
from typing import List, Optionalfrom fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: Optional[str] = Nonedescription: Optional[str] = Noneprice: Optional[float] = Nonetax: float = 10.5tags: List[str] = []items = {"foo": {"name": "Foo", "price": 50.2},"bar": {"name": "Bar", "description": "The bartenders", "price": 62, "tax": 20.2},"baz": {"name": "Baz", "description": None, "price": 50.2, "tax": 10.5, "tags": []},
}@app.get("/items/{item_id}", response_model=Item)
async def read_item(item_id: str):return items[item_id]@app.patch("/items/{item_id}", response_model=Item)
async def update_item(item_id: str, item: Item):stored_item_data = items[item_id] # 提取存储的数据stored_item_model = Item(**stored_item_data) # 原来的数据生成新的modelupdate_data = item.dict(exclude_unset=True) # 原来的model除去未设置的字段updated_item = stored_item_model.copy(update=update_data)# 创建新的model副本,更新数据(只更新设置的字段)items[item_id] = jsonable_encoder(updated_item) # 模型副本转换为可存入数据的形式,存入数据库return updated_item

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome 扩展 最近的历史 HistoryBar v1.1

说明 以前用过一段时间傲游浏览器,渐渐的习惯了它的鼠标手势和一些细微的人性化的功能。比方地址栏左边的“近期訪问的页面”button。能够方便的找到近期 20 条历史记录。 但后来因为某些原因又回到了 Chrome 的怀抱,于是就没有了这些不起眼但非常好用的…

java整数划分递归_整数划分问题(递归法)

整数划分问题是算法中的一个经典命题之一&#xff0c;有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分&#xff0c;是指把一个正整数n写成如下形式&#xff1a;nm1m2...mi; (其中mi为正整数&#xff0c;并且1 < mi < n)&#xff0c;则{m1,m2,...,mi}为n的一…

数组移位

昨天今日头条笔试&#xff0c;发现好简单&#xff0c;一写出了几个问题&#xff0c;回来才想出来。 一个长度不超过10000的整数数组&#xff0c;里面有若干个0&#xff0c;请事先一段代码&#xff0c;将数组中值为0的元素移动到数组的最前面&#xff0c;其余元素相对位置保持不…

LeetCode 2047. 句子中的有效单词数

文章目录1. 题目2. 解题1. 题目 句子仅由小写字母&#xff08;a 到 z&#xff09;、数字&#xff08;0 到 9&#xff09;、连字符&#xff08;-&#xff09;、标点符号&#xff08;!、. 和 ,&#xff09;以及空格&#xff08; &#xff09;组成。 每个句子可以根据空格分解成 …

java技术学习内容_Java开发主要都学些什么内容?

展开全部Java开发培训班主要学32313133353236313431303231363533e58685e5aeb931333363386164习的课程大纲&#xff0c;你可以看下。第一阶段:JavaSE基础、MySQL数据库应用1.1 Java SE基本语法Eclipse开发环境类和对象封装、继承和多态Java数据结构(栈、队列、链表的实现)IO流技…

LeetCode 2048. 下一个更大的数值平衡数(枚举)

文章目录1. 题目2. 解题1. 题目 如果整数 x 满足&#xff1a;对于每个数位 d &#xff0c;这个数位 恰好 在 x 中出现 d 次。 那么整数 x 就是一个 数值平衡数 。 给你一个整数 n &#xff0c;请你返回 严格大于 n 的 最小数值平衡数 。 示例 1&#xff1a; 输入&#xff1a…

LeetCode Longest Common Prefix

原题链接在这里&#xff1a;https://leetcode.com/problems/longest-common-prefix/ 题目&#xff1a; Write a function to find the longest common prefix string amongst an array of strings. 题解&#xff1a; strs中的第一个字符串从i 0 开始&#xff0c;取char, 取出c…

java 主方法 this_java main 方法怎么创建

学校作业。。publicstaticvoidmain(String[]args){不知道加在哪里packagepersonproject;publicclassPerson{publicstaticintlastId0;privateStringname;privateStringgender;privateS...学校作业。。public static void main(String[] args) {不知道加在哪里package personproj…

输出国际象棋输出余弦曲线

输出国际象棋棋盘 1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 int main(){5 int i,j;6 SetConsoleOutputCP(437);//显示大于127的ASiic 码 7 for(i0;i<8;i){8 for(j0;j<8;j){9 if((ij)%20 ){…

LeetCode 2049. 统计最高分的节点数目(DFS)

文章目录1. 题目2. 解题1. 题目 给你一棵根节点为 0 的 二叉树 &#xff0c;它总共有 n 个节点&#xff0c;节点编号为 0 到 n - 1 。 同时给你一个下标从 0 开始的整数数组 parents 表示这棵树&#xff0c;其中 parents[i] 是节点 i 的父节点。 由于节点 0 是根&#xff0c;所…

python源文件编码的含义_【原创】Python 源文件编码解读

以下内容源于对 PEP-0263 的翻译和解读&#xff0c;同时给出了一些网上网友的说法。 我是分割线 PEP 0263 -- Defining Python Source Code Encodings【摘要】给出声明 Python 源文件编码的语法。该编码信息后续会被 Python 解析器用于解析源文件。这种方式增强了对源文件中 U…

MyEclipse中SVN的常见的使用方法

本次主要内容&#xff1a; 一 、导入项目 &#xff08;Checkout&#xff09;。从svn资源库检出 二 、更新 &#xff08;Update&#xff09; 三、锁&#xff08;对要修改的文件加锁&#xff0c;防止文件冲突&#xff09; 四、提交&#xff08;项目修改后的提交&#xff09; 五、…

fastapi 路径依赖项Depends / 装饰器依赖dependencies / 全局依赖 / 带 yield 的依赖

文章目录1. 依赖项2. 类作为依赖3. 子依赖项3.1 多次使用同一个依赖项4. 路径操作装饰器依赖项5. 全局依赖项6. 带 yield 的依赖项7. 使用带 yield 上下文管理器作为依赖项learn from https://fastapi.tiangolo.com/zh/tutorial/dependencies/ 1. 依赖项 只能传给 Depends 一…

与number_format函数有关的一个bug?

最近在做一个模仿excel功能的在线项目。其中有一个功能&#xff0c;数据列表中的数据&#xff0c;到了最后一列都要进行总计。这本来没什么难度。直接从数据库取出数据后&#xff0c;进行foreach相加就行 了。这是如此的简单&#xff0c;以至于用了不到五分钟写就了功能&#x…

fastapi 安全性 / APIRouter / BackgroundTasks / 元数据 / 测试调试

文章目录1. 例子2. 获取当前用户3. 使用密码和 Bearer 的简单 OAuth24. 使用&#xff08;哈希&#xff09;密码和 JWT Bearer 令牌的 OAuth25. 多个应用文件5.1 APIRouter6. BackgroundTasks7. 元数据7.1 标题、描述和版本7.2 openapi_tags 标签元数据7.3 OpenAPI URL7.4 文档 …

java json path_Java使用JSONPath解析JSON完整内容详解

JsonPath是一种简单的方法来提取给定JSON文档的部分内容。 JsonPath有许多编程语言&#xff0c;如Javascript&#xff0c;Python和PHP&#xff0c;Java。JsonPath提供的json解析非常强大&#xff0c;它提供了类似正则表达式的语法&#xff0c;基本上可以满足所有你想要获得的js…

wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox

//----------------------------------------- //本程序展示了如何实现MessageBoxPrintf函数 //本函数能像printf那样格式化输出 //摘录自&#xff1a;《windows程序设计第五版》 //----------------------------------------- #include<windows.h> #include<tchar.h&…

LeetCode 2050. 并行课程 III(拓扑排序)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;表示有 n 节课&#xff0c;课程编号从 1 到 n 。 同时给你一个二维整数数组 relations &#xff0c;其中 relations[j] [prevCoursej, nextCoursej] &#xff0c;表示课程 prevCoursej 必须在课程 nextCoursej 之前…

改不改,这是一个问题

概率称号&#xff1a; 给你三盒。里面放的东西。您指定&#xff0c;然后打开了另外两个。发现是空的&#xff0c;要求&#xff1a;你想改变你的选择。 答案是&#xff0c;它应该改变网上评选&#xff0c;这样的概率较大。因此&#xff0c;我要求&#xff0c;空的情况下。选择的…

LeetCode 1521. 找到最接近目标值的函数值(位运算)

文章目录1. 题目2. 解题1. 题目 Winston 构造了一个如上所示的函数 func 。他有一个整数数组 arr 和一个整数 target &#xff0c;他想找到让 |func(arr, l, r) - target| 最小的 l 和 r 。 请你返回 |func(arr, l, r) - target| 的最小值。 请注意&#xff0c; func 的输入参…