首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FastAPI(22)- Pydantic Model 结合 Union、List 的使用场景

前言 有多个模型,且请求/响应需要声明多个模型的时候,可以根据不同使用场景结合 typing 库里面的 Union、List 来达到目的 Union 作用 联合类型,详细教程 使用 Union 时,建议首先包含具体的类型...import FastAPI from typing import Optional, Union, List, Dict from pydantic import BaseModel, EmailStr...返回的是一个数组 假设响应内容多了个 size items[1] 多了个 size 字段,但因为响应模型并不包含 size,所以最终返回的数据也不会包含 size 假设响应内容不包含 description...raise ValidationError(errors, field.type_) pydantic.error_wrappers.ValidationError: 1 validation...error for Item response -> 1 -> description field required (type=value_error.missing) 因为响应模型声明了 name

1.8K20

(入门篇)简析Python web框架FastAPI——一个比Flask和Tornada更高性能的API 框架

来看看 FastAPI 是如何处理错误的: ?...可以看到,即使是报错,也是优美的输入一个带有错误字段的 JSON,这就非常的友好了,这也是体现了 FastAPI 减少更多的人为错误的特性,返回也更加的简洁直观。 在命令行输出: ?...要知道的是,如果 short 参数没有默认值,则必须传参,否则 FastAPI 将会返回类似以下的错误信息。...": "value_error.missing" } ] } 创建数据模型 前面说到 FastAPI 依赖 Pydantic 模块,所以首先,你需要导入 Pydantic 的...成功提交并返回 200 状态码 请求主体+路径+查询参数,在请求主体的基础上加入 url 动态路径参数 和 查询参数 from fastapi import FastAPI from pydantic

2.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    先看下 FastAPI 有哪些突出特点,官网介绍如下: 快速:非常高的性能,性能可与NodeJS和Go相媲美(感谢Starlette 和 Pydantic)。现有最快的Python框架之一。...更少的错误:减少约40%的人为错误(开发人员)。 直观:强大的编辑器支持,程序调试时间更少。 简易:易于使用和学习,减少阅读文档的时间。 短:最小化重复代码,每个参数声明中的多个功能,减少编码错误。..."value_error.missing" } ] } 给大伙总结一下,在实际代码中可能会用到必需参数,默认参数,可选参数,如下: from fastapi import FastAPI...,有了声明的这个模型,可以实现以下功能: 以 JSON 读取请求的正文 根据声明的类型,自动对参数进行转换 验证数据,如果数据无效,它将返回一个清晰的错误,指出错误数据的确切位置和来源 在参数中接收收到的数据...(如int,float,str,bool,等等)将被解释为一个查询参数 item: 参数声明为 Pydantic 模型的类型,则将被解释为请求 body ?

    5.4K30

    数据验证的重要性与Python解决方案概述

    数据转换:能够将输入数据自动转换为指定的类型。错误提示友好:详细的错误信息便于调试。与FastAPI集成:FastAPI是一个现代的Web框架,与Pydantic无缝集成。...错误信息详细。与现代Web框架集成良好。缺点依赖Python的类型提示,不适合动态类型需求。功能相对专注于API和模型验证。2....支持灵活的规则定义。缺点不支持类型提示。错误信息不如Pydantic详细。对于复杂嵌套结构处理可能较繁琐。3....灵活的字段定义:支持嵌套和复杂字段。自定义验证:支持用户定义的验证规则。...灵活的字段定义和自定义验证。社区活跃,文档完善。缺点API学习曲线稍高。性能可能不及Pydantic。选型建议库名称使用场景Pydantic适合API开发、需要类型提示和FastAPI集成的场景。

    70100

    Python - pydantic(3)错误处理

    常见触发错误的情况 如果传入的字段多了会自动过滤 如果传入的少了会报错,必填字段 如果传入的字段名称对不上也会报错 如果传入的类型不对会自动转换,如果不能转换则会报错 错误的触发 pydantic 会在它正在验证的数据中发现错误时引发...会包含所有错误及其发生方式的信息 访问错误的方式 e.errors():返回输入数据中发现的错误的列表 e.json():以 JSON 格式返回错误(推荐) str(e):以人类可读的方式返回错误 简单栗子...": "type_error.float" } ] value_error.missing:必传字段缺失 value_error.number.not_gt:字段值没有大于 42 type_error.integer...:字段类型错误,不是 integer 自定义错误 # 导入 validator from pydantic import BaseModel, ValidationError, validator...= 'bar': # 自定义错误信息 raise ValueError('value must be bar') # 返回传进来的值

    1.4K20

    FastAPI(8)- 请求体 Request Body

    前言 接口传参方式之一:通过发送请求体(Request Body)来传递请求数据 在 FastAPI,提倡使用 Pydantic 模型来定义请求体 这篇文章会详细讲不使用 Pydantic 和 使用 Pydantic...JSON 字符串转换为 dict 这种场景下,虽然查询参数叫 item,但请求体的字段名可以随意取,字段数量也可以任意个 错误传参的请求结果 选了 text 之后,因为不是 JSON 字符串,FastAPI...声明为 Dict[str, float],FastAPI 会对每一个键值对都做数据校验,校验失败会有友好的错误提示 正确传参的请求结果 校验失败的请求结果 友好的错误提示啊~ 使用 Pydantic...JSON 字符串 将字段值转换相应的类型(若有需要) 验证数据,如果验证失败,会返回一个清晰的错误,准确指出错误数据的位置和信息 item 会接收到完整的请求体数据,拥有所有属性及其类型,IDE 也会给予对应的智能提示...即 "12.22" 将 12 转成 float 类型,即 12.0 将 true 转成 float 类型,即 1.0 如果转换失败,则会报 type_error 错误(如下图) 验证数据失败的请求结果

    4.1K20

    fastapi 响应模型 响应状态码 表单参数

    async def create_items(item: Item): return [item, item] 响应模型 对 返回的数据 进行转换,校验 例如: from typing import...添加输出模型 输出的时候不给密码,更改响应模型为不带密码的 from typing import Optional, List from fastapi import Cookie, FastAPI,...响应模型编码参数 response_model_exclude_unset 参数 True,输出忽略 未明确设置的 字段 response_model_exclude_defaults=True,忽略跟默认值一样的字段...对于来自客户端的一般错误,你可以只使用 400。 500 及以上状态码用于服务器端错误。你几乎永远不会直接使用它们。当你的应用程序代码或服务器中的某些部分出现问题时,它将自动返回这些状态代码之一。...表单参数 接收的不是 JSON,而是表单字段时,要使用 Form from fastapi import FastAPI, Form app = FastAPI() @app.post("/login

    89730

    FastAPI--参数提交Request Body(3)

    对于如何接收和校验请求体,FastApi提供的形式是使用:from pydantic import BaseModel 示例如下: import uvicorn from fastapi import ...,如果提交的Item它必须是怎么样的一个格式,比如name是必选字段,description是可选且默认为None, price是必选,且需要是float类型的,tax是可须且默认为None。...Request Body 和 Query 和 Path的混合 在设计一些API过程中难免的可能也会需要综合遇到上述的一些混搭的组合,需要同时多个参数的提交和获取 那么我们通常接收这次参数的话一般怎么接收呐...如果另外再假设,客户端提交一个更复杂的嵌套模型的话,怎么办?麻蛋的 肯定也是会有这样的情况滴! 嵌套里面有列表有实体。...Request Body的Field Field字段的意思其实就是类似上面Query, Path,也同样给Body内的字段的信息添加相关的校验。 也就是说。通过Field来规范提交的Body参数信息。

    2.6K100

    Python - pydantic 入门介绍与 Models 的简单使用

    settings 管理 pydantic 可以在代码运行时强制执行类型提示,并在数据校验无效时提供友好的错误提示 定义数据应该如何在规范的 python 代码中保存,然后通过 Python 验证它 Pydantic...保证输出模型的类型和约束,而不是输入数据 Models 简介 在 pydantic 中定义对象的主要方法是通过模型(模型是从 BaseModel 继承的类) 所有基于 pydantic 的数据类型本质上都是一个...BaseModel 类 可以将模型视为强类型语言中的类型(比如 Java) 不受信任的数据可以传递给模型,经过解析和验证后,pydantic 保证生成的模型实例的字段将符合定义的字段类型(实例字段类型符合类定义的字段类型...因为默认值是 string 类型,因此不需要类型提示( name : string ) 注意:当某些字段没有类型提示时,需要注意有关字段顺序的警告 声明一个有效实例 user = User(id='123...有什么自带的方法、属性 dict() 返回模型字段和值,字典格式 user = User(id='123', name="test") print(user.dict(), type(user.dict

    2.6K30

    FastAPI后台开发基础(10): 响应控制

    自动数据验证和序列化:FastAPI 会自动使用 ResponseModel 对返回的数据进行验证,并根据模型的配置(如 exclude 和 serialization_alias)序列化 JSON...会自动对返回的数据进行验证,确保它符合指定的 Pydantic 模型 这意味着返回的数据必须能够被该模型接受,否则会抛出错误 请求:curl -X 'POST' 'http://127.0.0.1...name 字段 当同时使用这些参数和属性时,它们的作用是累加的 具体的优先级如下: Pydantic 的 Field 属性 (include/exclude): 这些在模型级别定义,...对所有操作都有基本的影响 如果一个字段在模型中被设置为 exclude=True,那么无论路由级别的设置如何,这个字段都不会被包括在任何响应中 FastAPI 的 response_model_include...: 自定义响应:当你需要完全控制返回的 HTTP 响应的内容和格式时。

    15243
    领券