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

使用FastAPI时出现"Method Not Allowed"错误的问题排查

问题分析与解决

核心问题有两个:

1. 请求方法不匹配

你的接口用@app.post("/predict")声明为POST请求,但直接在浏览器地址栏输入URL访问时,浏览器默认发送的是GET请求,这就导致了"Method Not Allowed"错误——接口只接受POST,你发了GET,自然不允许。

2. 参数定义不符合FastAPI规范

你直接写request: str,FastAPI会把这个参数当成URL查询参数(比如/predict?request=xxx),但POST接口通常是从请求体里接收数据,这样的定义会导致即便用POST请求,也无法正确获取参数。


修复后的代码示例

方案一:用POST接收请求体字符串

from fastapi import FastAPI, Body

app = FastAPI()

@app.post("/predict")
def predict_(request: str = Body(...)):
    return {"message": 'Hellooo!', "received_content": request}

方案二:改成支持GET请求(方便浏览器直接测试)

from fastapi import FastAPI

app = FastAPI()

@app.get("/predict")
def predict_(request: str):
    return {"message": 'Hellooo!', "received_content": request}

这时你可以在浏览器访问http://localhost:8000/predict?request=测试内容来验证。


测试POST接口的正确方式

如果用方案一的POST接口,别用浏览器地址栏,换这两种方式:

  • 用FastAPI自带的文档页面:访问http://localhost:8000/docs,找到/predict接口,点击"Try it out"就能发送POST请求
  • 命令行用curl:
curl -X POST "http://localhost:8000/predict" -H "Content-Type: application/json" -d '{"request": "你的测试文本"}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:20:40