Запрос POSS Flask вызывает сбои сервера - программирование
Подтвердить что ты не робот

Запрос POSS Flask вызывает сбои сервера

Я пытаюсь сделать простой api в Flask, первым шагом получая данные POST json. (Я просто хочу распечатать его сейчас) Это мой код, и когда я запрашиваю /api с данными json, он возвращает ошибку 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"
}
4b9b3361

Ответ 1

Сначала вы хотите включить режим отладки, поэтому 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)

Вот ты!:)