fastApi笔记03-请求体

请求体是客户端发送给API的数据,fastApi使用 Pydantic 模型来声明请求体

不能使用 GET操作(HTTP 方法)发送请求体。

要发送数据,必须使用下列方法之一:POST(较常见)、PUTDELETE 或 PATCH

创建数据类型

from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = None

和查询参数一样,当一个模型属性具有默认值时,它不是必须的,否则它是一个必须属性,如果默认值为None,那么它是可选属性

声明为参数

from fastapi import FastAPI
from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = Noneapp = FastAPI()@app.post("/items/")
async def create_item(item: Item):return item

使用与声明路径和查询参数的相同方式声明请求体,即可将其添加到「路径操作」中,同时将它的类型声明为创建的Item模型

由于description和tax是可选参数,这两种请求入参都是可行的。

{"name": "Foo","description": "An optional description","price": 45.2,"tax": 3.5
}{"name": "Foo","price": 45.2
}

使用模型

from fastapi import FastAPI
from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = Noneapp = FastAPI()@app.post("/items/")
async def create_item(item: Item):item_dict = item.dict()if item.tax:price_with_tax = item.price + item.taxitem_dict.update({"price_with_tax": price_with_tax})return item_dict

在函数内部,可以直接访问模型对象的所有属性

请求体+路径参数+查询参数

函数参数将依次按如下规则进行识别:

  • 如果在路径中也声明了该参数,它将被用作路径参数。
  • 如果参数属于单一类型(比如 intfloatstrbool 等)它将被解释为查询参数。
  • 如果参数的类型被声明为一个 Pydantic 模型,它将被解释为请求体
from fastapi import FastAPI
from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str | None = Noneprice: floattax: float | None = Noneapp = FastAPI()@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item, q: str | None = None):result = {"item_id": item_id, **item.dict()}if q:result.update({"q": q})return result

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

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

相关文章

zabbix5.0利用percona监控MySQL

具体来说包括: Percona Monitoring Plugins 这是一组用于收集MySQL实例各种性能指标和状态的插件脚本,包括: mysqld_stats.pl - 收集服务器状态计数器mysqld_statement_replay.pl - 进行负载模拟测试pt-status - 收集InnoDB资源使用情况等 Percona Templates 基于这些插件收集…

博途PLC PID仿真(单容水箱液位高度控制)

单容水箱和双荣水箱的微分方程和数值求解,可以参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/131139432https://rxxw-control.blog.csdn.net/article/details/131139432这篇博客我们利用欧拉求解器在PLC里完成单容水箱的数学建模。PLC也可以和MATL…

一次平平无奇的 Oracle 注入

在某次项目中,首先是发现注入点,数据库是Oracle,利用方式是时间盲注: 因为需要具体数据,所以要深入利用,手工肯定不方便,所以直接上 Sqlmap: Sqlmap也可以扫出该注入点,但想要进一步…

C++数组实战——考试成绩统计

成绩一成绩二成绩三同学一100100100同学二607999同学三1009587 代码&#xff1a; #include <iostream> #include<string> using namespace std;int main() { int score[3][3] {{100,100,100},{60,79,99},{100,95,87},}; #定义分数二维数组string names[3]{&qu…

monaco脚本编辑器 在无界中使用 鼠标点击不到

背景A项目使用无界引入B项目 经排查&#xff0c;是B使用的的monaco脚本编辑器无法在A的无界框架中引入的问题。 经查询&#xff0c;需要修改monaco源码来使之能在无界中使用。 解决方案&#xff1a;https://github.com/Tencent/wujie/issues/205。 有三种解决方案&#xff1a; …

软件实际应用,物流运输货运单打印,打印样式模板可以定制

软件实际应用&#xff0c;物流运输货运单打印&#xff0c;打印样式模板可以定制 一、前言 以下软件程序教程以 佳易王物流单打印查询系统V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、 物流单起始站可以设置直接选择&#xff0c;到达…

ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例

目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下! 由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。 什么是…

C#的三种小数类型 decimal和double , float

在 C# 中&#xff0c;decimal、double 和 float 都是用来表示浮点数的数据类型&#xff0c;它们在内存中的存储方式和精度有所不同。 decimal&#xff1a; decimal 类型用于存储十进制数&#xff0c;适用于对小数精度要求较高的情况&#xff0c;比如财务计算。decimal 类型占据…

2024云服务器ECS_云主机_服务器托管_e实例-阿里云

阿里云服务器ECS英文全程Elastic Compute Service&#xff0c;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;阿里云提供多种云服务器ECS实例规格&#xff0c;如ECS经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等&#xff0c;阿里云服务器网al…

SpringBoot---集成MybatisPlus

介绍 使用SpringBoot集成MybatisPlus框架。 第一步&#xff1a;添加MybatisPlus依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version> </depende…

雷卯有多种5V低压ESD防静电元器件供您选择

一、5V单路ESD产品推荐 二、5V多路产品推荐 三、多路特色ESD内部结构图展示 四、方案推荐 USB3.0/TYPE-C 静电滤波保护方案 方案优点&#xff1a;USB3.0提供5.0Gbps的传输速度&#xff0c;本方案采用多路集成器件防护, 可节约空间&#xff0c;可保证信号完整性&#xff0c;可…

LeetCode--代码详解 4.寻找两个正序数组的中位数

4.寻找两个正序数组的中位数 题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 示例 1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = […

explain的type有哪些

在 MySQL 的 EXPLAIN 查询结果中&#xff0c;Type 列描述了查询中使用的访问类型&#xff08;Access Type&#xff09;&#xff0c;表示了 MySQL 查询优化器选择的访问方法。以下是常见的 Type 类型&#xff1a; ALL&#xff1a;全表扫描&#xff0c;表示 MySQL 将遍历整个表以…

将 mixamo 中的动画重定向到 UE 的小白人中

动画网站 https://www.mixamo.com/ 导入网格和动画 导入网格 为了方便可以在 Content 目录下面创建一个文件夹用于放 Mixamo 导入的项目。 进入 Mixamo 的官方。 按照图片中的步骤进行下载。 将下载好的文件拖入到 UE4 项目中创建好的文件夹 Character 中。导入时设置直接…

多端开发围炉夜话

文章目录 一、多端开发 一、多端开发 uni-app 官网 UNI-APP中的UI框架&#xff1a;介绍常用的UI框架及其特点 uView UIVant WeappColor UIMint UI

Redis之缓存雪崩问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 锁2. 不同的过期时间3. 缓存预热和定时任务 一、书接上文 Redis之缓存穿透问题解决方案实践SpringBoot3Docker 二、介绍 缓存雪崩&#xff0c;指大量的缓存失效&#xff0c;大量的请求又同时落在数据库。主要的一种诱因是key设…

jenkins的nmp install命令无法下载包

问题&#xff1a;在jenkin的流水线脚本中执行到&#xff1a;npm install命令后无法下载前端依赖包 1、进到jenkins的工作目录&#xff0c;一般在底层为/var/lib/jenkins/workspace/任务名称 cd /var/lib/jenkins/workspace/xkc处理方式&#xff1a; # 查看镜像源 npm config …

电路设计(24)——循环彩灯控制器的proteus仿真

1.设计要求 实先循环彩灯&#xff0c;功能如下&#xff1a; 8个LED从上到下依次亮&#xff0c;然后从上到下依次灭。重复以上过程 4个LED从上到下依次亮&#xff0c;然后从上到下依次灭。重复以上过程 2.设计思路 将两片74194级联&#xff0c;就可以实现八位的移位寄存器&…

最优二叉搜索树 C#实现

最优二叉搜索树 C#实现 介绍一下 上一篇博文搞半天挺烧脑&#xff0c;没搞清楚继续… 主要是练习动态规划算法。最关键的一个是这个最优二叉搜索树能干啥。我认为如果数据稳定&#xff0c;统计出概率来&#xff0c;用最优二叉树保存&#xff0c;以后搜索应该是效率比较高的。…

openGauss学习笔记-224 openGauss性能调优-系统调优-数据库系统参数调优-数据库并发队列参数调优

文章目录 openGauss学习笔记-224 openGauss性能调优-系统调优-数据库系统参数调优-数据库并发队列参数调优224.1 全局并发队列224.2 局部并发队列 openGauss学习笔记-224 openGauss性能调优-系统调优-数据库系统参数调优-数据库并发队列参数调优 数据库提供两种手段进行并发队…