首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

FastAPI从入门到实战(2)——Pydantic模型

前面了解了一下python类型提示,这里就接着记录一下Pydantic这个用来执行数据校验库。而且FastAPI就是基于python类型提示和Padantic实现数据验证。...,并用Pydantic验证; 基本用法 数据规范情况 这里**符号是为了分配参数,可以分配字典 # -*- coding: utf-8 -*- # @Time: 2022/11...str = "MinChess" #有默认值,选填字段 signup_ts: Optional[datetime] = None friends: List[int] = [] # 列表元素需要是...简单说,ORM 将数据库表与面向对象语言中类建立了一种对应关系。...支持所有字段类型 Pydantic支持很多类型数据,除了常用那些基本类型外,还有一些不常用类型,具体参看官网: https://pydantic-docs.helpmanual.io/usage

1.5K20

FastAPI(14)- 路径操作函数参数类型是一个嵌套 Pydantic Model 使用场景

带有类型参数字段 Python 有一种特定方法来声明具有内部类型或类型参数列表 其实前面都见过,就是 List[str] Set[str] Tuple[str] Dict[str, int] List...Pydantic Model 中使用 typing 提供类型 from typing import List, Optional, Set, Dict, Tuple from pydantic import...中使用 Pydantic 嵌套模型 #!...集合特性仍然会保留:去重 FastAPI 给嵌套模型提供功能 和前面讲没什么区别 IDE 智能代码提示,甚至对于嵌套模型也支持 数据转换 数据验证 OpenAPI 文档 正确传参请求结果 校验失败请求结果...from pydantic import BaseModel app = FastAPI() # 模型一 class Image(BaseModel): url: str name

70520

FastAPI学习-2.路径参数

所以,如果你运行示例并访问 http://127.0.0.1:8000/items/foo,将会看到如下响应: {"item_id":"foo"} 有类型路径参数 你可以使用标准 Python 类型标注为函数路径参数声明类型...Pydantic 所有的数据校验都由 Pydantic 在幕后完成,所以你可以从它所有的优点中受益。并且你知道它在这方面非常胜任。...由于 路径操作 是按顺序依次运行,你需要确保路径 /users/me 声明在路径 /users/{user_id}之前: from fastapi import FastAPI app = FastAPI...路径转换器 你可以使用直接来自 Starlette 选项来声明一个包含路径路径参数: /files/{file_path:path} 在这种情况下,参数名称为 file_path,结尾部分 :path...说明该参数应匹配任意路径

19810

FastAPI(4)- 路径参数 Path Parameters

什么是路径 假设一个 url 是: http://127.0.0.1:8080/items/abcd 那么路径 path 就是 /items/abcd 路径参数 就是将路径某一部分变成参数,...可通过请求传递,然后 FastAPI 解析 最简单栗子 import uvicorn from fastapi import FastAPI app = FastAPI() # 路径参数 item_id...return {"item_id": item_id, "num": num} 多个路径参数,且有指定类型 正确传参请求结果 123 传进来时候是字符串,但 FastAPI 会自动解析转换成...yy"} return {"model_name": model_name, "message": "巴拉巴拉"} 参数传枚举值请求结果 参数传非枚举值请求结果 错误提示传参数值并不是枚举类值..."item_id": item_id} 假设不传 item_id 总结 路径参数是请求路径一部分,如果不传,请求是另一个路径,如果不存在就会 404

2K21

FastAPI 学习之路(四)使用pydantic模型做请求体

FastAPI 系列文章: FastAPI 学习之路(一) FastAPI 学习之路(二) FastAPI 学习之路(三) 前言 我们之前文章分享了,如何增加参数...可以正常返回我们预期结果。 我们在代码创建数据模型,然后数据模型声明为继承自 BaseModel 类。 使用标准 Python 类型来声明所有属性。...从结果,我们可以看出,当我们没有传递参数时候,默认是null,那么我看下如果我们没有定义可选属性不传递,接口会怎么返回给我们呢。 ? 我们可以看到,接口已经返回了对应错误。...接口文档默认定义模型将成为生成 OpenAPI 模式一部分,并且在交互式 API 文档展示。...后续我们会分享不适用 Pydantic模型也可以。 ---- 后记 发现问题,解决问题。遇到问题,慢慢解决问题即可。 欢迎关注雷子说测试开发,后续将会持续为大家分享更多技术知识

1.9K40

fastapi 用户指南(路径参数、查询参数、请求体)

路径参数 2.1 顺序很重要 2.2 预设值 2.3 包含路径路径参数 3. 查询参数 3.1 查询参数类型转换 4....还可以返回 Pydantic 模型 1.1 小结 导入 FastAPI 创建一个 app 实例 编写一个路径操作装饰器(如 @app.get("/")) 编写一个路径操作函数(如上面的 def root...请求体 请求体是客户端发送给 API 数据 响应体是 API 发送给客户端数据 使用 Pydantic 模型来声明请求体 from typing import Optional from Pinyin2Hanzi...函数参数将依次按如下规则进行识别: 1.如果在路径也声明了该参数,它将被用作路径参数 2.如果参数属于单一类型(比如 int、float、str、bool 等)它将被解释为查询参数 3.如果参数类型被声明为一个...Pydantic 模型,它将被解释为请求体

1.5K30

FastAPI学习-6.POST请求 JSON 格式 body

前言 post请求接收json格式请求body 创建数据模型pydantic 中导入 BaseModel, 将你数据模型声明为继承自 BaseModel 类。...启动服务后,使用 postman 测试接口 docs 文档 你所定义模型 JSON 模式将成为生成 OpenAPI 模式一部分,并且在交互式 API 文档展示: body + path路径参数...FastAPI 将识别出与路径参数匹配函数参数应从路径获取,而声明为 Pydantic 模型函数参数应从请求体获取。...: 如果在路径也声明了该参数,它将被用作路径参数。...如果参数属于单一类型(比如 int、float、str、bool 等)它将被解释为查询参数。 如果参数类型被声明为一个 Pydantic 模型,它将被解释为请求体。

8.1K30

FastAPI 学习之路(十四)响应模型

FastAPI 系列文章: FastAPI 学习之路(一) FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四)使用pydantic模型做请求体...这次我们来看下响应模型。我们之前看都是请求模型,请求参数,这次呢,我们看下响应相关。 正文 我们可以在我们不同请求路径返回参数使用响应模型。我们看一个简单demo。...不像之前所有参数和请求体,它不属于路径操作函数。...它接收类型与你将为 Pydantic 模型属性所声明类型相同,因此它可以是一个 Pydantic 模型,但也可以是一个由 Pydantic 模型组成 list,例如 List[Item]。...FastAPI 将使用此 response_model 来: 将输出数据转换为其声明类型。 校验数据。 在 OpenAPI 路径操作为响应添加一个 JSON Schema。

92530

FastAPI(8)- 请求体 Request Body

Item 模型 async def create_item(item: Item): return item 参数指定为 Pydantic 模型后,FastAPI 做了这几件事 将请求体识别为...str,所以 IDE 会智能提示 str 内置方法 Request body + path + query parameters 综合栗子 可以同时声明请求体、路径参数、查询参数 FastAPI...可以识别出它们每一个,并从正确位置获取到数据 实际代码 from typing import Optional from fastapi import FastAPI from pydantic...属性值 result.update({"name": name}) return result FastAPI 识别参数逻辑 如果参数也在路径声明,它将解释为路径参数【item_id...】 如果参数是单数类型(如int、float、str、boo l等),它将被解释为查询参数【name】 如果参数被声明为 Pydantic 模型类型,它将被解析为请求体【item】 正确传参请求结果

3.8K20

全面拥抱FastApi —三大参数及验证

前面说过 FastApi 一大特点是基于标准 Python 3.6类型声明,兼具参数校验功能,这一切都要归功于 Pydantic 路径参数 路径参数即 url 路径参数,可以使用 Python 格式字符串相同语法声明路径...其中还有一个是路径参数:item_id, str 类型 请求体参数 要发送请求正文,必须使用一个:POST, PUT,DELETE或PATCH,需导入 Pydantic BaseModel from...,有了声明这个模型,可以实现以下功能: 以 JSON 读取请求正文 根据声明类型,自动对参数进行转换 验证数据,如果数据无效,它将返回一个清晰错误,指出错误数据的确切位置和来源 在参数接收收到数据...同时,FastApi 可以自动帮我们识别请求 body 参数, 路径参数以及查询参数,并准确获取参数数据。...: item_id: 路径参数 q: 参数是一个单一类型(如int,float,str,bool,等等)将被解释为一个查询参数 item: 参数声明为 Pydantic 模型类型,则将被解释为请求

5.2K30

FastAPI从入门到实战(0)——初识FastAPI

FastAPI特性 基于开放标准 用于创建 API OpenAPI 包含了路径操作,请求参数,请求体,安全性等声明。...所有的校验都由完善且强大 Pydantic 处理。 安全性及身份验证 集成了安全性和身份认证。杜绝数据库或者数据模型渗透风险。 OpenAPI 定义安全模式,包括: HTTP 基本认证。...所有的依赖关系都可以从请求获取数据,并且增加了路径操作约束和自动文档生成。 即使在依赖项中被定义路径操作 也会自动验证。 支持复杂用户身份认证系统,数据库连接等等。 不依赖数据库,前端等。...无限制"插件" 或者说,导入并使用你需要代码,而不需要它们。 任何集成都被设计得被易于使用(用依赖关系),你可以用和路径操作相同结构和语法,在两行代码为你应用创建一个“插件”。...更快: 在 基准测试 Pydantic 比其他被测试库都要快。 验证复杂结构: 使用分层 Pydantic 模型, Python typing List 和 Dict 等等。

3.4K20

FastAPI学习-7.POST请求body-多个参数

将注意到该函数中有多个请求体参数(两个 Pydantic 模型参数)。...请求体单一值 与使用 Query 和 Path 为查询参数路径参数定义额外数据方式相同,FastAPI 提供了一个同等 Body。...嵌入单个请求体参数 假设你只有一个来自 Pydantic 模型 Item 请求体参数 item。 默认情况下,FastAPI 将直接期望这样请求体。...但是,如果你希望它期望一个拥有 item 键并在值包含模型内容 JSON,就像在声明额外请求体参数时所做那样,则可以使用一个特殊 Body 参数 embed: item: Item = Body...但是 FastAPI 会处理它,在函数为你提供正确数据,并在路径操作中校验并记录正确模式。 你还可以声明将作为请求体一部分所接收单一值。

1.6K30

python编程 30秒高级私人定制 Response对象

fastapi 路径操作,通常直接返回以下数据类型:dict,list,Pydantic 模型,数据库模型以及其他数据类型。...2.1 参数 responses 我们可以传递给路径操作装饰器一个参数 responses,他接收一个字典数据,键值是不同 HTTP 状态码,内容是不同情况下返回内容(字典格式)。...如果返回内容包含键值 model,那么它作用与 response_model 相同,指向内容是 Pydantic 模型。...如下示例,当返回状态码是 404 时候,对应 Pydantic 模型是 Message : # -*- encoding: utf-8 -*- from fastapi import FastAPI... Response 模型 2.讲解了如何去自定义 Response,读者可根据自己业务场景进行实践 3.简单介绍了 status_code ,下节在分享 fastapi 异常处理时候还会再讲解

86570

FastAPI学习-8.POST请求body添加Field

前言 与使用 Query、Path 和 Body 在路径操作函数声明额外校验和元数据方式相同,你可以使用 Pydantic Field 在 Pydantic 模型内部声明校验和元数据。...Field 字段参数说明 关于 Field 字段参数说明 Field(None) 是可选字段,不传时候值默认为None Field(…) 是设置必填项字段 title 自定义标题,如果没有默认就是字段属性值...导入 Field from typing import Optional from fastapi import Body, FastAPI from pydantic import BaseModel...导入,而不是像其他(Query,Path,Body 等)都从 fastapi 导入。...总结 你可以使用 Pydantic Field 为模型属性声明额外校验和元数据。 你还可以使用额外关键字参数来传递额外 JSON Schema 元数据。

95260
领券