python - Flask POST 请求导致服务器崩溃

标签 python json api rest flask

我正在尝试在 Flask 中制作一个简单的 api,第一步是获取 POST json 数据。 (我现在只想打印它)这是我的代码,当我使用 json 数据请求/api 时,它返回 500 错误。关于为什么会发生这种情况的任何想法?

from flask import Flask, request, Response
app = Flask(__name__)

@app.route('/')
def root_response():
    return "Hello World."

@app.route('/api', methods=['POST', 'GET'])
def api_response():
    if request.method == 'POST':
        return request.json

if __name__ == '__main__':
    app.run()

curl 命令:

$ curl -H "Content-Type: application/json" --data @body.json http://127.0.0.1:5000/api
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request.  Either the server is overloaded or there is an error in the application.</p>

body.json:

{
"please": "print",
"me": "now"
}

最佳答案

首先你要做的是启用 Debug模式,这样 Flask 就会真正告诉你错误是什么。 (每次修改代码时,您都会获得重新加载 flask 的额外好处!)

if __name__ == '__main__':
    app.debug = True
    app.run()

然后我们发现我们的错误:

TypeError: 'dict' object is not callable

您正在返回 request.json,它是一个字典。您需要先将其转换为字符串。这很容易做到:

def api_response():
    from flask import jsonify
    if request.method == 'POST':
        return jsonify(**request.json)

你来了! :)

关于python - Flask POST 请求导致服务器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10219486/

相关文章:

python - python中大数的素因数分解

javascript - 在 JavaScript 中访问子对象

python - CV2影像内存体

python - 如何在odoo中弹出成功消息?

python - 使用 OpenCV + Python 按 y 坐标过滤 SIFT 点

c# - 如何将包含包含数组的列表的列表从 C# 序列化为 JSON?

json boolean vs integer - 哪个占用更少的空间?

iphone - 如何为移动应用程序设计安全的 API/身份验证以访问服务?

node.js - HTTP 模块请求模块翻译

mysql - Azure MySql Rest API。插入新的防火墙规则