You need to enable JavaScript to run this app. FastAPI实现webhook时调用Request.json无法获取正确JSON数据问题
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI实现webhook时调用Request.json无法获取正确JSON数据问题

问题原因
  • FastAPI 中 Request 对象的 json 是异步协程方法,不是属性,你代码中 print(request.json) 没有加括号调用方法,直接打印的是方法本身的内存地址,也就是你看到的 <function Request.json at 0x...> 输出
  • 该方法是异步方法,调用后需要搭配 await 关键字等待执行完成,才能拿到解析后的JSON数据
  • 你代码中 return await request.json() 写法是正确的,接口实际响应会返回你需要的JSON结构,仅控制台打印逻辑有问题
修正后的代码

main.py

from fastapi import FastAPI, Request
app = FastAPI()
@app.post("/webhook")
async def get_body(request: Request):
    # 先调用异步方法获取解析后的JSON数据再打印
    json_data = await request.json()
    print(json_data)
    return json_data
可选优化写法

如果不需要额外操作原始请求对象,FastAPI支持自动解析JSON请求体,无需手动调用request.json():

from fastapi import FastAPI
from pydantic import BaseModel, Field

app = FastAPI()

# 定义接收的JSON结构,带空格的字段用alias指定映射
class WebhookPayload(BaseModel):
    name: str
    channel_url: str = Field(alias="Channel URL")

@app.post("/webhook")
async def get_body(payload: WebhookPayload):
    # by_alias=True 保证输出时保留原字段名"Channel URL"
    print(payload.dict(by_alias=True))
    return payload.dict(by_alias=True)

这种写法还会自动对请求数据做类型校验,不符合结构的请求会直接返回422错误,无需手动处理异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:30:01