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

返回带有字段名而不是别名的pydantic model作为fastapi响应

在FastAPI中,可以使用Pydantic模型作为响应的返回类型。Pydantic是一个用于数据验证和序列化的Python库,它提供了一种简单而强大的方式来定义数据模型。

当使用Pydantic模型作为FastAPI的响应类型时,可以选择返回带有字段名而不是别名的模型。为了实现这一点,可以在Pydantic模型的Config类中设置alias_generatorNone,并将allow_population_by_field_name设置为True。这样做可以确保返回的模型中的字段名与定义的字段名一致。

下面是一个示例:

代码语言:txt
复制
from fastapi import FastAPI
from pydantic import BaseModel, Field

class Item(BaseModel):
    name: str = Field(..., alias="item_name")

    class Config:
        allow_population_by_field_name = True
        alias_generator = None

app = FastAPI()

@app.get("/items/{item_id}")
def read_item(item_id: int):
    item = Item(name="Foo")
    return item

在上面的示例中,Item模型定义了一个名为name的字段,并使用Field函数设置了别名为item_name。通过设置Config类的属性,我们确保返回的模型中的字段名为name而不是别名item_name

关于FastAPI和Pydantic的更多信息,可以参考以下链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

表单参数 learn from https://fastapi.tiangolo.com/zh/tutorial/response-model/ 1. response_model 响应模型 不是 路径参数...208) async def read_item(item_id: str): return items[item_id] 关于 HTTP 状态码 在 HTTP 协议中,你将发送 3 位数数字状态码作为响应一部分...100 及以上状态码用于「消息」响应。你很少直接使用它们。具有这些状态代码响应不能带有响应体。 200 及以上状态码用于「成功」响应。这些是你最常使用。...一个特殊例子是 204,「无内容」。此响应在没有内容返回给客户端时使用,因此该响应不能包含响应体。 300 及以上状态码用于「重定向」。...表单参数 接收不是 JSON,而是表单字段时,要使用 Form from fastapi import FastAPI, Form app = FastAPI() @app.post("/login

85930
  • FastAPI(27)- Handling Errors 处理错误

    前言 许多情况下,需要向客户端返回一些特定错误,比如 客户端没有足够权限进行该操作 客户端无权访问该资源 客户端尝试访问项目不存在 HTTPException 介绍 要将带有错误 HTTP 响应...,应该 raise 它,不是 return 它 查看一下 HTTPException 源码 status_code:响应状态吗 detail:报错信息 headers:响应头 简单栗子 当 item_id...重写默认异常处理程序 FastAPI 有一些默认异常处理程序 比如:当引发 HTTPException 并且请求包含无效数据时,异常处理程序负责返回默认 JSON 响应 可以使用自己异常处理程序覆盖...body 属性 RequestValidationError 包含它收到带有无效数据正文,可以在开发应用程序时使用它来记录主体并调试它,将其返回给用户 数据验证失败请求结果 看一眼 RequestValidationError...子类 当使用了 response_model,如果响应数据校验失败,就会抛出 ValidationError 客户端并不会直接收到 ValidationError,而是会收到 500,并报 Internal

    1K10

    FastAPI(19)- Response Model 响应模型

    前言 前面文章写这么多路径函数最终 return 都是自定义结构字典 FastAPI 提供了 response_model 参数,声明 return 响应模型 什么是路径操作、路径函数 # 路径操作...Pydantic Model FastAPI 通过 response_model 会做 将输出数据转换为 Model 中声明类型 验证数据 在 OpenAPI 给 Response 添加 JSON...因为路径函数返回值并不是固定,可能是 dict、数据库对象,或其他模型 但是使用响应模型可以对响应数据进行字段限制和序列化 区分请求模型和响应模型栗子 需求 假设一个注册功能 输入账号、密码、昵称...、邮箱,注册成功后返回个人信息 正常情况下不应该返回密码,所以请求体和响应体肯定是不一样 实际代码 from typing import Optional from fastapi import FastAPI...password FastAPI 通过 Pydantic 过滤掉所有未在响应模型中声明数据 正确传参请求结果 查看 Swagger API 文档 来看看路径操作有什么关于响应模型参数 response_model_exclude_unset

    1.2K40

    FastAPI(21)- 多个模型代码演进

    需求 注册功能 请求输入密码 响应不需要输出密码 数据库存储加密后密码 实际代码 #!...import FastAPI from typing import Optional from pydantic import BaseModel, EmailStr app = FastAPI()...因为代码重复增加了错误、安全问题、代码同步问题(当在一个地方更新不是在其他地方更新时)等可能性 上面代码存在问题 三个模型都共享大量数据 利用 Python 继承思想进行改造 声明一个 UserBase...模型,作为其他模型基础 然后创建该模型子类来继承其属性(类型声明、验证等),所有数据转换、验证、文档等仍然能正常使用 这样,不同模型之间差异(使用明文密码、使用哈希密码、不使用密码)也很容易识别出来...import FastAPI from typing import Optional from pydantic import BaseModel, EmailStr app = FastAPI()

    50530

    FastAPI(46)- JSONResponse

    背景 创建 FastAPI 路径操作函数时,通常可以从中返回任何数据:字典、列表、Pydantic 模型、数据库模型等 默认情况下,FastAPI 会使用 jsonable_encoder 自动将该返回值转换为...将使用 JSONResponse 返回响应 但是可以直接从路径操作函数中返回自定义 JSONResponse 返回响应数据常见方式(基础版) https://www.cnblogs.com/poloyy.../p/15364635.html 最简单栗子 路径操作函数返回一个 Pydantic Model #!...Model 类 但最终返回给客户端是一个 JSON 数据 等价写法 @app.post("/item") async def get_item(item: Item): return item...__name__} ' TypeError: Object of type Item is not JSON serializable 类型错误:项目类型对象不是 JSON 可序列化 因为它无法转换为

    1.3K10

    全面拥抱 FastApi响应模型

    ,使用response_model 参数指明该路径响应模型 其具有以下特点: 转换为类型声明输出数据 响应数据校验 在 OpenAPI 路径操作中,为响应添加 JSON Schema 生成 API...而且,response_model 接收类型与声明 Pydantic 模型属性类型,语法完全相同 使用响应模型 先来看下简单用法,定义一个响应模型 User from pydantic import...response_model_include 如果只有一个 Pydantic 模型, 但是在不同接口中,因为某些需求不同,返回 body 又不一样。...[name_id] 可以看到, response_model_exclude_unset 参数为 True 时候,未修改默认参数不会返回 反之,给默认值字段赋予了新内容,则新值会包含在返回响应中...[name_id] 返回结果如下: 虽然 FastAPI 能够识别出 description、tax 和 tags 值与默认值相同,这些值也会显式设置(不是取自默认值)

    87330

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

    这次我们来看下响应模型。我们之前看都是请求模型,请求参数,这次呢,我们看下响应相关。 正文 我们可以在我们不同请求路径返回参数使用响应模型。我们看一个简单demo。...=One) def create_item(item: One): return item 我们可以看下,接口正常返回 response_model是「装饰器」方法(get...它接收类型与你将为 Pydantic 模型属性所声明类型相同,因此它可以是一个 Pydantic 模型,但也可以是一个由 Pydantic 模型组成 list,例如 List[Item]。...FastAPI 将使用此 response_model 来: 将输出数据转换为其声明类型。 校验数据。 在 OpenAPI 路径操作中为响应添加一个 JSON Schema。...我们在接口请求中,如果不传递,我不想要返回带默认值, 我们看下代码如何实现 from typing import Optional from fastapi

    97030

    FastAPI(8)- 请求体 Request Body

    ,而且 Swagger API 并不会显示 GET 请求请求体 不使用 Pydantic栗子 from fastapi import FastAPI import uvicorn app = FastAPI...JSON 字符串转换为 dict 这种场景下,虽然查询参数叫 item,但请求体字段名可以随意取,字段数量也可以任意个 错误传参请求结果 选了 text 之后,因为不是 JSON 字符串,FastAPI...JSON 字符串 将字段值转换相应类型(若有需要) 验证数据,如果验证失败,会返回一个清晰错误,准确指出错误数据位置和信息 item 会接收到完整请求体数据,拥有所有属性及其类型,IDE 也会给予对应智能提示...查看 Swagger API 文档 Schema 部分 model JSON Schema 会成为 Swagger APi 文档一部分 示例值部分 IDE 智能提示 因为知道 name 属性类型是...可以识别出它们中每一个,并从正确位置获取到数据 实际代码 from typing import Optional from fastapi import FastAPI from pydantic

    4K20

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

    @my_app.get("/") 告诉 FastAPI 在它下方函数负责处理如下访问请求: 请求路径为 / 使用 get 操作 函数可以返回一个 dict、list,像 str、int 一样单个值,...还可以返回 Pydantic 模型 1.1 小结 导入 FastAPI 创建一个 app 实例 编写一个路径操作装饰器(如 @app.get("/")) 编写一个路径操作函数(如上面的 def root...your_enum_member.value 来获取实际值 2.3 包含路径路径参数 参数 { } 内 参数名:path :前后均没有空格,不加 :path 无法识别 带有/ 路径参数...请求体 请求体是客户端发送给 API 数据 响应体是 API 发送给客户端数据 使用 Pydantic 模型来声明请求体 from typing import Optional from Pinyin2Hanzi...import Item from fastapi import FastAPI from pydantic import BaseModel class Item(BaseModel): name

    1.7K30

    使用FastAPI重写Django官网Polls教程

    {"item":"apple","q":"delicious"} 这太好了,我们已经创建了API有两个终点: http://127.0.0.1:8000/不接收任何参数,它只是返回一个JSON响应。...好,到目前为止还不错,我们现在将使用pydantic库来创建数据接口schema,它主要作用是做类型强制检查,有点类似DRF序列化器。...,并且将类型作为参数传递为此类=Column question_text = Column(String) Pydantic风格声明使用: 和小写str。...question_text: str Pyndatic 模型/模组将映射到传入数据(POST、PUT 中请求数据)和从 API 返回响应数据。...= Depends(get_db)): return crud.get_all_questions(db=db) 注意在,返回对象列表,不仅仅是一个对象,所以我们应该让我们框架知道。

    1.4K20

    FastAPI 学习之路(二十一)请求体 - 更新数据

    FastAPI 学习之路(十一) FastAPI 学习之路(十二)额外数据类型 FastAPI 学习之路(十三)Cookie 参数,Header参数 FastAPI 学习之路(十四)响应模型...FastAPI 学习之路(十五)响应状态码 FastAPI 学习之路(十六)Form表单 FastAPI 学习之路(十七)上传文件 FastAPI 学习之路(十八)表单与文件 FastAPI 学习之路...PUT 也可以使用PATCH; 提取存储数据; 把数据放入 Pydantic 模型; 生成不含输入模型默认值 dict (使用 exclude_unset 参数); 只更新用户设置过值,不用模型中默认值覆盖已存储过值...这种方式与 Pydantic 模型 .dict() 方法类似,但能确保把值转换为适配 JSON 数据类型,例如, 把 datetime 转换为 str 。...把数据保存至数据库; 返回更新后模型。 后记 发现问题,解决问题。遇到问题,慢慢解决问题即可。

    87250

    FastAPI--响应报文(4)

    一、概述 使用response_model定义 请求一个接口返回来我们客户端可见东西都是所谓响应报文,如响应头,响应码,响应内容等。 通常不会那么傻用户输入什么就返回什么。...以下官网示例纯粹演示看: import uvicorn from fastapi import FastAPI from pydantic import BaseModel, EmailStr...通常再定义我们API返回响应时候,一般是返回固定JSON格式,所以可以直接使用定义response_model为一个字典: import uvicorn from fastapi import ...关于响应状态码status_code 通常一个接口请求完成,如果没有什么异常通常会返回200: 如日志打印出来一样: INFO:     127.0.0.1:58141 - "POST /user/ ...HTTP/1.1" 400 INFO:     127.0.0.1:58315 - "POST /user/ HTTP/1.1" 200 FastAPI运行我们指定返回status_code,如下示例

    84540

    FastAPI(64)- Settings and Environment Variables 配置项和环境变量

    可以使用和 Pydantic Model 所有相同验证功能和工具,例如不同数据类型和使用 Field() #!...Settings 会有用,不是让全局对象拥有可随处使用 Settings 在测试期间会有用,因为使用自定义 Settings 覆盖依赖项非常容易 config.py from pydantic import...get_settings(): return Settings() 上述代码,如果作为请求依赖项,那么每次请求进来,都会创建一个 Settings 对象,然后读取一次 .env 文件,这不是我们希望...@lru_cache() 修改它修饰函数返回与第一次返回相同值,不是再次执行函数内部代码 因此,它下面的函数将针对每个参数组合执行一次 然后,每当使用完全相同参数组合调用函数时,每个参数组合返回相同值将一次又一次地使用...Rick 使用完全相同参数调用函数时,直接返回结果不会执行厘米代码 原理图

    2.2K20

    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...: "string", "name": "string" } ] } 重点 tags 虽然声明为 Set(),但在接口层面并没有集合这个概念,所以还是传数组 [ ] 格式哦,并不是传...集合特性仍然会保留:去重 FastAPI 给嵌套模型提供功能 和前面讲没什么区别 IDE 智能代码提示,甚至对于嵌套模型也支持 数据转换 数据验证 OpenAPI 文档 正确传参请求结果 校验失败请求结果...from pydantic import BaseModel app = FastAPI() # 模型一 class Image(BaseModel): url: str name

    72620
    领券