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

运行Flask应用时浏览器访问/webhook提示Method Not Allowed是什么原因

报错根因

你代码中/webhook路由的配置为 @app.route("/webhook", methods=["POST"]),仅允许接收POST请求;而Chrome浏览器直接在地址栏输入地址访问时,默认发送的是GET请求,请求方法不匹配,因此返回405 Method Not Allowed错误。

webhook接口本身的设计用途就是接收第三方平台(如TradingView)的推送数据,这类推送默认都是用POST方法传递JSON参数,因此该路由原本就不需要支持GET请求,你直接用浏览器访问的行为本身不符合接口的设计场景。

接口测试方案

如果需要验证接口是否正常工作,可选择以下任意一种方式:

  • 使用接口测试工具(Postman、Apifox等)构造POST请求,向对应地址传入符合格式的JSON参数,即可正常得到返回结果
  • 直接在终端执行curl命令测试,示例如下:
curl -X POST -H "Content-Type: application/json" -d '{"ticker":"BTCUSDT","strategy":{"order_action":"buy","order_contracts":0.1,"order_price":30000}}' 你的ngrok.io地址/webhook

如果确实需要让浏览器访问/webhook时不报错,可以修改路由配置,同时兼容GET和POST请求,修改示例如下:

# 修改methods参数,新增GET支持
@app.route("/webhook", methods=["GET", "POST"])
def webhook():
    # 新增GET请求的处理逻辑
    if request.method == "GET":
        return "webhook运行正常,请通过POST方法提交数据"
    # 以下为原有POST请求处理逻辑,保持不变
    data = request.data
    if data:
        r.publish('tradingview', data)
        data_dict = request.json
        db = get_db()
        cursor = db.cursor()
        cursor.execute("""
            INSERT INTO signals (ticker, order_action, order_contracts, order_price) 
            VALUES (?, ?, ?, ?)
        """, (data_dict['ticker'], 
                data_dict['strategy']['order_action'], 
                data_dict['strategy']['order_contracts'],
                data_dict['strategy']['order_price']))
        db.commit()
        return data
    return {
        "code": "success"
    }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:18:03