FastAPI-Body、Field

参考:模式的额外信息 - 例子 - FastAPI

在FastAPI中,BodyField是两个常用的注解,它们用于定义请求体中的数据或路径参数、查询参数等的处理方式。这两个注解都来自于Pydantic库,用于数据验证和解析,但它们的应用场景有所不同。

Body

Body是一个注解,用来指示FastAPI从HTTP请求的主体(即请求体)中读取数据,并根据提供的模型或类型进行解析和验证。当期望客户端通过POST、PUT等方法发送JSON对象或其他格式的数据时,就会用到Body它常与Pydantic的模型类一起使用来定义请求体的结构

Field

Field是Pydantic模型类中用于定义模型字段属性的一个方法。它允许你为模型的字段添加额外的元数据,比如默认值、标题、描述等Field通常不直接用于FastAPI的路由定义中,而是用于定义Pydantic模型的结构,这些模型随后可能作为Body、查询参数、路径参数等使用。

举例:

from typing import List, Set, Union, Optional
import uvicorn
from fastapi import FastAPI, Body
from pydantic import BaseModel, HttpUrl, Field
from typing_extensions import Annotated# 初始化FastAPI应用程序
app = FastAPI()# 定义Item模型,表示商品项的属性
class Item(BaseModel):name: strdescription: Union[str, None] = Noneprice: floattax: Union[float, None] = None# 定义Item_1模型,与Item类似,但提供了更详细的字段示例
class Item_1(BaseModel):name: str = Field(examples=["Foo"])description: Union[str, None] = Field(default=None, examples=["A very nice Item"])price: float = Field(examples=[35.4])tax: Union[float, None] = Field(default=None, examples=[3.2])# 更新物品信息的API端点
# 接收一个item_id参数和一个Item实例作为请求体
@app.put("/items/{item_id}")
async def update_item(item_id: int, item: Item):results = {"item_id": item_id, "item": item}return results# 另一个更新物品信息的API端点,使用了更详细的Annotated注解来指定请求体的期望格式
@app.put("/items_1/{item_id}")
async def update_item(item_id: int,item: Annotated[Item_1,Body(examples=[{"name": "Foo","description": "A very nice Item","price": 35.4,"tax": 3.2,}],),],
):results = {"item_id": item_id, "item": item}return results# 主函数,用于启动FastAPI应用程序
# 注释中提供了两种运行模式:线上模式和调试模式
# 主函数,用于启动FastAPI应用程序
if __name__ == "__main__":## 线上模式# uvicorn.run("abr_server:app", host="0.0.0.0", port = 1218)## debug 模式uvicorn.run("test4:app", host="0.0.0.0", port=1218, reload=True, )

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

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

相关文章

第6章_libmodbus使用

文章目录 第6章 libmodbus使用6.1 libmodbus开发库6.1.1 功能概要6.1.2 源码获取6.1.3 源码阅读1. 新建工程2. 同步文件3.打开工程4. 操作示例5. 快捷键 6.1.4 libmodbus与应用程序的关系 6.2 libmodbus源代码解析6.2.1 核心函数6.2.2 框架分析与数据结构6.2.3 情景分析1. 初始…

OOXML入门学习

进入-飞入 <par> <!-- 这是一个并行动画序列的开始。"par"代表并行&#xff0c;意味着在这个标签内的所有动画将同时开始。 --><cTn id"5" presetID"2" presetClass"entr" presetSubtype"4" fill"hold&…

vue3 封装获取文件后缀和name的工具方法以及本地下载方法

获取文件后缀 /*** description&#xff1a;获取附件后缀* param {*} file 文件名称* param {*} isDot 是否显示点 0: 显示 1: 不显示*/ export const getFileType: (file?: string, isDot?: 0 | 1) > string (file, isDot 0) > {if (!file) {throw "file is n…

深度解析:Transformer自注意力机制的计算奥秘

深度解析&#xff1a;Transformer自注意力机制的计算奥秘 在自然语言处理&#xff08;NLP&#xff09;的广阔天地中&#xff0c;Transformer模型犹如一颗璀璨的星辰&#xff0c;以其卓越的性能照亮了序列建模的道路。而这一切&#xff0c;都离不开自注意力机制&#xff08;Sel…

C语言指针速成下篇

c语言的指针下篇终于迎来了收尾&#xff0c;那么废话不多说&#xff0c;我们直接进入正题 指针访问数组 # include <stdio.h> int main () { int arr[ 10 ] { 0 }; // 输⼊ int i 0 ; int sz sizeof (arr)/ sizeof (arr[ 0 ]); // 输⼊ int * p arr //这…

在Tomcat中部署war包

1、准备war包 确保已经有一个有效的war包&#xff0c;该war包包含了web应用程序的所有内容&#xff1b; 2、停止tomcat服务器 在部署之前&#xff0c;确保tomcat服务器已经停止&#xff0c;进入tomcat的配置目录执行命令&#xff1a;[路径]/tomcat/conf&#xff1b; 在Linux…

Socket——向FTP服务器发送消息并获得响应

1、简介 Socket&#xff08;套接字&#xff09;是网络编程中用于描述IP地址和端口的一个抽象概念&#xff0c;通过它可以实现不同主机间的通信。套接字可以分为几种不同的类型&#xff0c;每种类型对应不同的协议和传输模式。 1.1、基本概念 IP地址&#xff1a;用于标识网络…

【管理咨询宝藏137】RB大型卡车集团供应链体系优化设计方案中期汇报

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏137】RB大型卡车集团供应链体系优化设计方案中期汇报 【格式】PDF版本 【关键词】罗兰贝格、供应链管理、运营提升 【核心观点】 - 甲方采取销售…

每天一个项目管理概念之SOW

在项目管理中&#xff0c;Statement of Work&#xff08;SOW&#xff0c;工作说明&#xff09;是定义项目范围、目标、交付成果、时间表和预算的正式文档。 SOW的核心要素 SOW应当包含以下关键组成部分&#xff1a; 项目背景与目标 阐述项目的背景信息、发起原因以及预期达…

CBSD创建和管理bhyve容器Ubuntu@FreeBSD

bhyve介绍&#xff1a;bhyve&#xff1a;FreeBSD下的原生虚拟机管理器_freebsd 虚拟化平台bhyve-CSDN博客 两个bhyve的管理软件&#xff1a;使用bvm管理bhyve虚拟机管理系统FreeBSD-CSDN博客 vm-bhyve&#xff1a;bhyve虚拟机的管理系统FreeBSD-CSDN博客 现在&#xff0c;我…

从零开始做题:LSB

1 题目 2 解题 2.1 使用stegsolve工具 ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc] └─$ java -jar Stegsolve.jar 2.1.1 发现R、G、B的plane0有隐藏信息 2.1.2 提取隐藏信息 2.1.3 save bin后得到二维码 2.1.4 QR Research得到flag 3 flag cumtctf{1sb_i4_s0_Ea4y}

9种慢慢被淘汰的编程语言...【送源码】

技术不断进步&#xff0c;我们使用的编程语言也不例外。 随着人工智能的兴起以及对编程语言使用的影响&#xff0c;我们更加关注哪些语言将在未来继续流行&#xff0c;哪些会被淘汰。 Python、Java 和 JavaScript 等多功能编程语言正在主导市场&#xff0c;而其他一些语言则逐…

Android实现录音并保存为wav文件

场景 在Android中怎样实现类似发送语音消息功能前的按键录音并将其显示在RecyclerView上并且能点击录音文件进行播放。 一、使用AudioRrecord录音 赋予录音权限 打开AndroidManifest.xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_ST…

kubernetes给指定用户分配调用k8s的api权限

文章目录 概要利用RBAC添加角色权限使用shell命令创建角色权限使用配置文件创建角色权限 调用k8s的api获取k8s账户的token 小结 概要 使用kubernetes部署项目时&#xff0c;有些特殊场景&#xff0c;我们需要在自己创建的pod里面调用k8s的api来管理k8s&#xff0c;但是需要使用…

Spring Boot中的动态数据源切换

Spring Boot中的动态数据源切换 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将探讨如何在Spring Boot中实现动态数据源切换的技术。动态…

某山词霸翻译js逆向分析

一、基础知识 1、post的几种发包的方式 2、query string和form data的区别 Query String Parameters&#xff1a; GET请求时&#xff0c;参数会以url string 的形式进行传递&#xff0c;即?后的字符串则为其请求参数&#xff0c;并以&作为分隔符。&#xff08;有时候pos…

修改 app id - 鸿蒙 HarmonyOS Next

修改项目 app id 后通过真机 build run 的时候抛出了如下异常; 项目中更改后的配置与真机的不匹配; {app: {bundleName: "com.xxxxxx.xxx_harmony",vendor: "xxxxxx",versionCode: 1,versionName: "3.5.00",icon: "$media:app_icon",…

有什么简单易上手的CRM系统推荐?五款CRM软件评测

在数字化时代&#xff0c;企业急需一个能全面展示客户、销售和分析数据的CRM系统。当然&#xff0c;简单易用的CRM系统成了企业首选。选择系统时&#xff0c;同时要关注它的实际功能是否满足需求&#xff0c;是否容易上手&#xff0c;能否根据企业需求灵活定制&#xff0c;能否…

一种自定义SPI通信协议

本文介绍一种自定义SPI通信协议。 项目开发过程中&#xff0c;有时候会涉及到主处理器或FPGA和MCU之间的SPI通信&#xff0c;涉及到通信就需要考虑通信协议&#xff0c;本文给出一种简单的通信协议。 1.协议格式 协议格式如下图。 其中&#xff0c;将40 bit划分为2大部分&am…

【uniapp】上传附件+Java后端

一、背景 移动端项目使用uniapp开发&#xff0c;项目有上传附件的需求。现在分享给大家&#xff0c;一起进步 二、前端 关键代码&#xff1a; uni.chooseFile({type: "all",count: this.count,success: res > {let len 0;res.tempFiles.forEach((item, index…