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

Flask中Method Not Allowed错误求助:已配置POST方法仍报错

排查Flask CRUD应用的"Method Not Allowed"错误

核心问题定位

  1. 路由定义语法错误
    代码中/users/<user_id>相关路由误用了HTML转义字符&lt;和&gt;,而非Flask要求的<>格式,导致这些路由无法被正确注册。例如:

    # 错误写法
    @app.route('/users/&lt;user_id&gt;', methods=['GET'])
    # 正确写法
    @app.route('/users/<user_id>', methods=['GET'])
    

    这个错误会让Flask无法识别/users/xxx路径的GET/DELETE路由,当向该路径发送非GET请求时,就会返回"Method Not Allowed"。

  2. 请求路径与路由不匹配
    确认POST请求是发送到/users(对应创建用户的POST路由),而非/users/xxx(该路径仅支持GET和DELETE)。误将POST请求发送到带用户ID的路径,必然触发方法不允许的错误。

修复步骤

1. 修正路由语法

将所有包含&lt;user_id&gt;的路由替换为正确的<user_id>:

# 修正GET用户路由
@app.route('/users/<user_id>', methods=['GET'])
@cross_origin()
def get_user(user_id):
    # ... 原有代码保持不变

# 修正DELETE用户路由
@app.route('/users/<user_id>', methods=['DELETE'])
@cross_origin()
def delete_user(user_id):
    # ... 原有代码保持不变

2. 验证请求正确性

用curl命令测试接口,确保请求路径和方法正确:

# 发送POST请求创建用户
curl -X POST -H "Content-Type: application/json" -d '{"id": "1", "title": "Demo", "name": "Samuel"}' http://localhost:5000/users

# 发送GET请求获取用户
curl http://localhost:5000/users/1

# 发送DELETE请求删除用户
curl -X DELETE http://localhost:5000/users/1

3. 优化CORS配置(可选)

将局部的@cross_origin()装饰器替换为全局CORS初始化,避免遗漏:

app = Flask(__name__)
CORS(app)  # 全局启用CORS
app.config['CORS_HEADERS'] = 'Content-Type'

额外检查点

  • 确认Redis服务已启动并正常运行,避免因Redis连接问题间接引发异常。
  • 检查请求头是否包含Content-Type: application/json,虽然代码中用force=True强制解析JSON,但正确的请求头能避免潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:25:18