[英]Flask Curl POST - 500 Internal Secer Error - Pyrest API
尝试设置 pyrest 时出现 500 内部服务器错误。
我正在使用来自https://linuxhint.com/rest_api_python/的指南来尝试在我的 python 3 服务器中设置休息 API,我在 api.py 中使用下面的代码并使用终端,第一个 GET 请求我已经投入工作并很好地显示数据,当涉及到 POST 请求时,我正在尝试使用 Ubuntu 在虚拟机上工作,但出现 500 个内部错误...
from flask import Flask, jsonify
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)
我猜代码是正确的,它更多的是服务器问题,问题是我正在尝试将此服务安装到我的服务器上以使 POST 方法正常工作,不确定我是否缺少任何步骤。
我在用
curl -X POST -H "Content-Type: application/json" -d '{"name": "Shovon", "balance": 100}' http://127.0.0.1:8080/account
将数据“添加”到 api.py 文件中的帐户列表中。
感谢您的帮助,这是我第一次使用 FLASK 和 APP.Route,所以如果是新手错误,请原谅我。
您忘记从Flask
导入request
,因此addAccount()
函数中的前两行会引发 500 错误。 要解决此问题,您只需将顶部的导入行更改为:
from flask import Flask, jsonify, request
另外要注意的另一件事是,鼓励按照 PEP8 标准编写函数名称,在单词之间使用下划线而不是驼峰式大小写。 这是您文件的固定版本:
from flask import Flask, jsonify, request
app = Flask(__name__)
accounts = [
{'name': "Billy", 'balance': 450.0},
{'name': "Kelly", 'balance': 250.0}
]
@app.route("/accounts", methods=["GET"])
def get_accounts():
return jsonify(accounts)
@app.route("/account/<id>", methods=["GET"])
def get_account(id):
id = int(id) - 1
return jsonify(accounts[id])
@app.route("/account", methods=["POST"])
def add_account():
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.