fastApi笔记06-请求体-多个参数

多个请求体参数

from fastapi import FastAPI, Path, Query
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = Noneclass User(BaseModel):username: strfull_name: str | None = None@app.put("/items")
async def update_item(item: Item, user: User):results = {"item": item, "user": user}return results

 当函数有多个请求实体(多个 Pydantic 模型参数),将使用参数名称作为请求体中的键(字段名称),并期望一个类似于以下内容的请求体

{"item": {"name": "Foo","description": "The pretender","price": 42.0,"tax": 3.2},"user": {"username": "dave","full_name": "Dave Grohl"}
}

请求体中的单一值

 假如为了拓展先前的模型,除了user和item之外,在请求体中增加一个字段importance,需要使用Body来声明,不然会被当做查询参数

from fastapi import FastAPI, Body
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = Noneclass User(BaseModel):username: strfull_name: str | None = None@app.put("/items")
async def update_item(item: Item, user: User, importance: int = Body()):results = {"item": item, "user": user, "importance": importance}return results
{"item": {"name": "Foo","description": "The pretender","price": 42.0,"tax": 3.2},"user": {"username": "dave","full_name": "Dave Grohl"},"importance": 5
}

嵌入单个请求体实参

 假如只有一个来自的模型Item,如果你希望它期望一个拥有 item 键并在值中包含模型内容的 JSON,就像在声明额外的请求体参数时所做的那样。比如下面这样的。

{"item": {"name": "Foo","description": "The pretender","price": 42.0,"tax": 3.2}
}

而不是这样的。

{"name": "Foo","description": "The pretender","price": 42.0,"tax": 3.2
}

则可以使用一个特殊的 Body 参数 embed

from typing import Annotatedfrom fastapi import Body, FastAPI
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = None@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Annotated[Item, Body(embed=True)]):results = {"item_id": item_id, "item": item}return results

 声明模型属性

和使用Query,Path,Body在路径操作函数中声明参数校验和元数据的方式相同,可以使Pydantic 的Field在模型内部进行声明校验和元数据

from typing import Annotatedfrom fastapi import Body, FastAPI
from pydantic import BaseModel, Fieldapp = FastAPI()class Item(BaseModel):name: strdescription: str | None = Field(default=None, title="The description of the item", max_length=300)price: float = Field(gt=0, description="The price must be greater than zero")tax: float | None = None@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Annotated[Item, Body(embed=True)]):results = {"item_id": item_id, "item": item}return results

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

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

相关文章

量子加密机的工作原理是什么

量子加密机,作为现代加密技术的一大飞跃,正逐渐成为信息安全领域的研究热点。与传统的加密方法相比,量子加密技术以其独特的优势,为信息安全提供了更为坚实的保障。 量子加密的核心在于利用量子力学的特性,尤其是量子纠…

MySQL 多表操作

一.多表关系 1.一对一关系 一个学生只有一张身份证;一张身份证只能对应一个学生。 在任一表中添加外键,指向另一方主键,确保一对一关系。 一般一对一关系很少见,遇到一对一关系的表最好合并。 2.一对多/多对一关系 一个部门…

Mesh中的负载均衡策略介绍

通过负载均衡配置,将请求均匀分配到各个服务节点,避免请求集中在某一点上 Round Robin Weighted Round Robin Ring Hash Weighted Ring Hash​ Random Weighted Random Least Request Ring Hash MD5 Mesh 数据面基于 Envoy 深度定制,在负载均衡算法方面,使用的大部分是 En…

国产chat gpt推荐

下述网站响应非常快 会持续更新的! 付费: 小名言 免费: AIchatOS 百度的文心一言

【虚拟仿真】Unity3D中实现3DUI,并且实现Button、InputField、Toggle等事件绑定

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 最近在项目中需要用到3DUI的展示,之前一般会用TextMeshPro进行展示: 但是,后面又需要添加按钮、Toggle等…

船运物流管理系统|基于springboot船运物流管理系统设计与实现(源码+数据库+文档)

船运物流管理系统目录 目录 基于springboot船运物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、货运单管理 3、公告管理 4、公告类型管理 5、新闻管理 6、新闻类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 …

【线性代数基础】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱 简述概要 关于线性代数的基础知识。 知识图谱 1.基本概念: 向量:向量是一个有方向的量,可以用一组数(称为坐标)来表示。在二维空间中&#x…

4、电源管理入门之子系统reset

目录 1. 简介 2. consumer-驱动软件 3. provider-reset驱动 3.1 整体介绍 3.2 reset复位API说明 之前的文章电源管理入门-1关机重启详解介绍了整机SoC的重启也可以说是reset,那么子系统的reset,例如某个驱动(网卡、USB等)或者某个子系统(NPU、ISP等运行在独立的M核或…

Windows安装PHP及在VScode中配置插件,使用PHP输出HelloWorld

安装PHP PHP官网下载地址(8.3版本):PHP For Windows:二进制文件和源代码发布 点击下载.zip格式压缩包: 历史版本在Old archives中下载。推荐在Documentation download中下载官方文档,方便学习。 下载完成后在一个顺眼的地方解压压…

力扣刷题-202.快乐数

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…

华为OD机试真题-二叉树计算-2024年OD统一考试(C卷)

题目描述:给出一个二叉树如下图所示: 6 / \ 7 9 \ / -2 6 请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。 2…

读取Excel工具类

需要的jar包 poi-3.13.jar poi-ooxml-3.13.jar poi-ooxml-schemas-3.13.jar poi-scratchpad-3.9.jar 工具类1 package com.test.poi;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.…

MySQL学习笔记3: MySQL数据库基础

目录 前言目标数据库操作(针对database 的操作)1. 创建数据库 create database 数据库名;2. 查看数据库 show databases;3. 选中数据库 use 数据库名;4. 删除数据库 drop database 数据库名; mysql中支持的数据类型1. 数值类型: NUMERIC(M,D)2. 字符串类…

实现Slider 滑块组件标记动态变化

实现以上效果&#xff0c;下拉框、slider滑块、按钮都在同一行&#xff0c;设置flex布局后&#xff0c;发现silider滑块最右边的标记数字一直都如下竖着显示&#xff0c;后来通过给源组件的标记区.el-slider__marks-text增加一个宽度后解决该问题。 <template><div>…

Linux实验记录:使用LNMP架构部署动态网站环境

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; LNMP动态网站部署架构是一套由&…

HTML5 扩展了 HTMLDocument 类型

HTMLDocument 扩展 ​ HTML5 扩展了 HTMLDocument 类型&#xff0c;增加了更多功能。与其他 HTML5 定义的 DOM 扩展一样&#xff0c; 这些变化同样基于所有浏览器事实上都已经支持的专有扩展。为此&#xff0c;即使这些扩展的标准化相对较晚&#xff0c; 很多浏览器也早就实现…

探索亚信安慧AntDB的数据库管理之道

AntDB数据库管理系统以其卓越的性能和稳定性成为众多用户的选择之一。这款系统采用了影响力大、社区繁荣、开放度高、生态增长迅速的PG内核&#xff0c;为用户提供了稳定可靠的数据库解决方案。 数据库的稳定性对于用户来说至关重要&#xff0c;特别是在面对大规模数据处理和高…

Go语言进阶篇——泛型

前言 在开始今天有关泛型的介绍之前,我们先来看一个简单的例子&#xff0c;如果我们要设计两个int类型变量相加的函数&#xff0c;我们可以这样设计&#xff1a; func Sum (a, b int) int {return a b }如果变量要求是float类型或者是其他类型&#xff0c;我们要面对一个问题…

使用Java语言,解决斐波那契兔子问题

/* 一对兔子&#xff0c;从出生后第三个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c; 假如兔子都不死&#xff0c;问第二十个月的兔子对数为多少&#xff1f; 1 1 2 3 5 8 13 1 1 1 1 1 1 11 1 1 1 11 1 1 11 1 11 1 11 11 11 11111…

高防服务器是怎样进行防御的?

随着互联网的发展&#xff0c;网络攻击和恶意流量也日益增多&#xff0c;高防服务器作为企业网络安全的重要保障&#xff0c;越来越受到关注。那么&#xff0c;高防服务器是怎样进行防御的呢&#xff1f; 高防服务器主要是指具备防御DDoS攻击、CC攻击、7x24小时实时防御网站入…