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

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_funcjson_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_funcjson_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_schemareturn self.generate_inner(schema['json_schema'])File "d:\Envs\miniconda3\envs\xdagent\lib\site-packages\pydantic\json_schema.py", line 565, in generate_innerjson_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_funcjson_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_schemareturn 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_schemaraise 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.lryc.cn/news/519800.html

相关文章:

  • 《机器学习》——sklearn库中CountVectorizer方法(词频矩阵)
  • UML系列之Rational Rose笔记三:活动图(泳道图)
  • Java面向对象面经总结
  • 红队工具使用全解析:揭开网络安全神秘面纱一角
  • OpenLinkSaas 2025年第一季度开发计划
  • 【python小工具】怎么获取视频的关键帧频率?
  • 数字孪生可视化在各个行业的应用场景
  • Python实现windows自动关机
  • Go可以使用设计模式,但绝不是《设计模式》中的那样
  • 【C语言】_使用冒泡排序模拟实现qsort函数
  • openCvSharp 计算机视觉图片找茬
  • 从零开始开发纯血鸿蒙应用之处理外部文件
  • Spring中三级缓存详细讲解
  • 论文阅读:《Whole-animal connectomes of both Caenorhabditis elegans sexes》
  • 嵌入式开发之STM32学习笔记day03
  • windows10 安装 Golang 版本控制工具g与使用
  • SpringBoot 使用 Cache 集成 Redis做缓存保姆教程
  • R数据分析:多分类问题预测模型的ROC做法及解释
  • 数据结构与算法之二叉树: LeetCode 654. 最大二叉树 (Ts版)
  • Linux 容器漏洞
  • file与io流(1)
  • 忘记了PDF文件的密码,怎么办?
  • Linux权限管理(用户和权限之间的关系)
  • Python Selenium库入门使用,图文详细。附网页爬虫、web自动化操作等实战操作。
  • 【Uniapp-Vue3】使用defineExpose暴露子组件的属性及方法
  • 【多模态LLM】英伟达NVLM多模态大模型训练细节和数据集
  • HTTP详解——HTTP基础
  • MySQL教程之:输入查询
  • docker+ffmpeg+nginx+rtmp 拉取摄像机视频
  • 不同音频振幅dBFS计算方法