You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI启动触发AssertionError:如何修复请求参数配置错误?

问题:FastAPI启动时AssertionError错误修复

错误信息

AssertionError: Param: nodes can only be a request body, using Body():

原始代码

from fastapi import FastAPI
from fastapi.responses import JSONResponse
from typing import List, Dict

app = FastAPI(title="Neo4jAPI")

@app.post("/create_nodes/")
def post(nodes: List[Dict] | None = Header(default=None)):
    #Some Logic
    return JSONResponse(nodes)

修复方案

错误原因

nodes被声明为Header类型,但List[Dict]这类复杂结构化数据无法通过HTTP请求头传递——请求头仅支持字符串、数字这类简单类型。FastAPI检测到参数类型与传递方式不匹配,因此抛出断言错误,提示该参数应使用请求体(Body)接收。

修改后的代码

from fastapi import FastAPI, Body
from fastapi.responses import JSONResponse
from typing import List, Dict, Optional

app = FastAPI(title="Neo4jAPI")

@app.post("/create_nodes/")
def post(nodes: Optional[List[Dict]] = Body(default=None)):
    # Some Logic
    return JSONResponse(nodes)

修改说明

  1. 新增导入Body类,用于声明参数从请求体获取
  2. 将Header(default=None)替换为Body(default=None),修正参数的传递方式
  3. 可选:用Optional[List[Dict]]替代List[Dict] | None,提升对Python 3.9及以下版本的兼容性

额外说明

如果需要通过请求头传递数据,仅能使用字符串、数字等简单类型;复杂结构化数据的传递,优先使用请求体(适用于POST/PUT请求),若用查询参数传递复杂结构会导致URL过长且解析麻烦,不推荐。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:37:06