搭建PyREST接口时POST请求出现500 Internal Server Error问题求助
解决Flask POST请求500 Internal Server Error的问题
嘿,这是个非常典型的新手小失误——你的代码里在POST接口中使用了request对象来获取JSON数据,但忘记从Flask库中导入它了!Flask找不到这个变量,就会抛出未定义的异常,直接返回500错误。
修复步骤
- 补充
request导入:在代码开头的导入语句里加上request - 重新运行你的Flask应用
修正后的完整代码
from flask import Flask, jsonify, request # 这里添加了request导入 app = Flask(__name__) accounts = [ {'name': "Billy", 'balance': 450.0}, {'name': "Kelly", 'balance': 250.0} ] @app.route("/accounts", methods=["GET"]) def getAccounts(): return jsonify(accounts) @app.route("/account/<id>", methods=["GET"]) def getAccount(id): id = int(id) - 1 return jsonify(accounts[id]) @app.route("/account", methods=["POST"]) def addAccount(): name = request.json['name'] balance = request.json['balance'] data = {'name': name, 'balance': balance} accounts.append(data) return jsonify(data) if __name__ == '__main__': app.run(port=8080, debug=True) # 建议加上debug=True,开发时能看到详细错误信息
额外优化建议
- 开发阶段开启
debug=True,出错时会在控制台/浏览器显示详细异常信息,排查问题更高效 - 给POST接口增加错误处理,避免客户端未传
name或balance时抛出KeyError:@app.route("/account", methods=["POST"]) def addAccount(): if not request.json or 'name' not in request.json or 'balance' not in request.json: return jsonify({"error": "Missing required fields: name/balance"}), 400 name = request.json['name'] balance = request.json['balance'] data = {'name': name, 'balance': balance} accounts.append(data) return jsonify(data), 201 # 返回201状态码更符合REST规范,表示资源创建成功 - 给
getAccount接口增加边界判断,避免传入无效ID时抛出索引错误:@app.route("/account/<id>", methods=["GET"]) def getAccount(id): try: account_index = int(id) - 1 if account_index < 0 or account_index >= len(accounts): return jsonify({"error": "Account not found"}), 404 return jsonify(accounts[account_index]) except ValueError: return jsonify({"error": "Invalid ID format, must be integer"}), 400
现在重新运行你的应用,再执行之前的curl命令,应该就能成功添加账户啦!
内容的提问来源于stack exchange,提问作者harry0
相关产品推荐
相关产品推荐

