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

FastAPI中POST请求异常:终端显示GET请求,Body(...)参数声明失效

FastAPI POST接口405错误及Body参数解析问题解决

一、405 Method Not Allowed 错误解决

终端日志明确显示收到的是GET /create请求,但你的接口通过@app.post("/create")声明为仅支持POST方法,因此FastAPI返回405(方法不允许)。

常见触发场景及解决:

  • 直接在浏览器地址栏访问接口:浏览器默认发送GET请求,需改用Postman、curl或FastAPI自带的文档页面(http://127.0.0.1:8000/docs)选择POST方法测试。
  • 请求工具方法配置错误:检查Postman、curl等工具的请求方法是否设置为POST,而非GET。

二、Body(...)声明dict参数的正确使用

你代码中payload: dict = Body(...)的写法本身合规,但如果测试时未正确传递JSON请求体,会导致参数解析失败。

正确测试方式

发送请求时必须携带JSON格式的请求体,示例:

{
  "title": "我的测试帖子",
  "content": "FastAPI测试内容"
}

更规范的写法(推荐)

使用Pydantic模型定义请求体,既能自动校验数据格式,也能生成清晰的接口文档:

from pydantic import BaseModel
from fastapi import FastAPI

app = FastAPI()

# 定义请求体模型
class PostRequest(BaseModel):
    title: str  # 必填字段
    content: str

@app.post("/create")
def create_posts(post: PostRequest):
    print(post.dict())  # 转为dict使用
    return {"message": f"successfully created posts: {post.title}"}

curl测试命令示例

curl -X POST http://127.0.0.1:8000/create \
  -H "Content-Type: application/json" \
  -d '{"title":"测试帖子", "content":"测试内容"}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:27:43