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

使用Python Requests调用FastAPI接口返回422 Unprocessable Entity错误排查

问题排查与修复方案

1. FastAPI端点路径错误

你的FastAPI路由定义缺少开头的斜杠,不符合HTTP路径规范,会导致路由无法被正确匹配:

@app.post("my_endpoint")  # 错误写法

需修改为:

@app.post("/my_endpoint")  # 正确写法,路径必须以/开头

2. 请求参数传递方式错误

接口使用ModelInterface作为请求体参数,FastAPI默认解析JSON格式的请求体,而非URL查询参数(params)或表单数据(data)。调用时必须用json参数传递数据:

response = requests.post(url, json=request_dict)  # 自动设置Content-Type为application/json,符合接口要求

3. 参数类型不匹配

调用函数call_filedet的languages参数是str类型,但接口期望的是List[str]类型,需将字符串转换为列表(根据实际传入格式调整,比如逗号分隔的字符串):

def call_filedet(name: str, contents: str, languages: str) -> Dict[str, str]:
    url = "http://my_url/my_endpoint"
    
    request_dict = {
        "name": name,
        "contents": contents,
        "languages": languages.split(",")  # 将字符串转为列表,适配接口的List[str]类型
    }

    response = requests.post(url, json=request_dict)

4. 422错误调试技巧

遇到422错误时,直接打印response.json(),FastAPI会返回详细的字段验证错误详情(比如哪个字段类型不匹配、缺少必填字段等),这是快速定位问题的核心方法:

if response.status_code == 422:
    print(response.json())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:27:25