当前位置: 首页 > article >正文

FastApi Swagger 序列化问题

问题

错误现象:

  • fastapi的 swagger 界面无法正常打开
  • 控制台报错:raise PydanticInvalidForJsonSchema(f'Cannot generate a JsonSchema for {error_info}')
    在这里插入图片描述

详细报错:

  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 540, in new_handler_func
    json_schema = js_modify_function(schema_or_field, current_handler)
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\beanie\odm\fields.py", line 178, in __get_pydantic_json_schema__
    json_schema = handler(schema)
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\_internal\_schema_generation_shared.py", line 38, in __call__
    return self.handler(core_schema)
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 493, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 1337, in json_or_python_schema
    return self.generate_inner(schema['json_schema'])
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 565, in generate_inner
    json_schema = current_handler(schema)
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\_internal\_schema_generation_shared.py", line 38, in __call__
    return self.handler(core_schema)
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 493, in handler_func
    json_schema = generate_for_schema_type(schema_or_field)
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 1084, in function_plain_schema
    return self.handle_invalid_for_json_schema(
  File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 2273, in handle_invalid_for_json_schema
    raise PydanticInvalidForJsonSchema(f'Cannot generate a JsonSchema for {error_info}')
pydantic.errors.PydanticInvalidForJsonSchema: Cannot generate a JsonSchema for core_schema.PlainValidatorFunctionSchema ({'type': 'with-info', 'function': <bound method PydanticObjectId.validate of <class 'beanie.odm.fields.PydanticObjectId'>>})

For further information visit https://errors.pydantic.dev/2.10/u/invalid-for-json-schema

问题原因

如下所示,在接口定义的时候指定了response_model 参数,用于告诉swagger当前接口的返回值的具体类型。但是由于指定的 Database 类使用了pydantic,属性中含有不支持的类型,但是没有做相应的序列化操作。

@router.get("/{rdb_id}", response_model=Database)
async def get_database_by_id(id: str):

解决方法

简单来说,只需要把 response_model 参数配置去调即可。
如果需要保留则可以把属性中pydantic不支持的类型,替换为支持的类型。

@router.get("/{rdb_id}")
async def get_database_by_id(id: str):

http://www.kler.cn/a/500475.html

相关文章:

  • [创业之路-242]:《华为双向指挥系统》-1-组织再造-企业普遍采用的5种组织结构形式
  • 【源码解析】Java NIO 包中的 ByteBuffer
  • IDEA中创建maven项目
  • 周记-CIE XYZ和RGB的区别
  • Github 2025-01-12 php开源项目日报 Top10
  • C#用直线和曲线抗锯齿
  • GraphQL:强大的API查询语言
  • iOS 逆向学习 - iOS Application Publishing:应用发布
  • Linux下ext2文件系统
  • Kotlin 协程基础九 —— SharedFlow 与 StateFlow
  • 【复习小结】14-21
  • ue5 蒙太奇,即上半身动画和下半身组合在一起,并使用。学习b站库得科技
  • 鸿蒙面试 2025-01-11
  • 一个基于Spring Boot的智慧养老平台
  • Python 正则表达式完全指南
  • Spring Boot项目中如何使用日志记录
  • Mac——Docker desktop安装与使用教程
  • 2013年下半年试题四:论分布式存储系统架构设计及其实现
  • 【Linux网络编程】网络层 | IP协议 | 网段划分 | 私有IP和公有IP | NAT技术
  • ollama大模型API调用接口
  • Web前端界面开发
  • 如何用SQL语句来查询表或索引的行存/列存存储方式|OceanBase 用户问题集锦
  • Spring Boot 和微服务:快速入门指南
  • acwing_3196_I‘m stuck