Настройте ответ об ошибке при отправке неверных JSON данных - PullRequest
0 голосов
/ 05 августа 2020

Я отправляю недействительный JSON, содержащий только {, моему Flask приложению, которое проверяет JSON и возвращает его результат.

Я получил следующую ошибку, отправив команду через cURL.

curl -i -X POST -H "Content-Type:application/json" -d @/Users/xxxx/yyyy/test.json http://0.0.0.0:5000/validate
HTTP/1.0 400 BAD REQUEST
Content-Type: text/html
Content-Length: 221
Server: Werkzeug/0.16.0 Python/3.7.3
Date: Wed, 05 Aug 2020 11:09:48 GMT

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>Failed to decode JSON object: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)</p>

Обычно, если данные являются действительными JSON, то есть ответ от сервера, но в этом случае кажется, что приложение не отреагировало .

Мои вопросы:

  • Что именно возвращает это сообщение?
  • Можно ли настроить ответ? В частности, я бы хотел настроить сообщение.

1 Ответ

0 голосов
/ 05 августа 2020

, чтобы настроить ошибку, возвращаемую при отправке недопустимого объекта json, вы можете сделать следующее:

from flask import jsonify, request
from werkzeug.wrappers import BaseRequest
[..]

@app.route('/validate')
def validate():
    if request.method == 'POST':

        # Assert that the payload is a valid JSON
        try:
            data = request.json
        except BadRequest, e:
            return jsonify(code=e.code,
                           name=e.name,
                           description=e.description), e.code
            # you can customize "description" message with your own like "Payload is not a valide JSON"

        # the payload is valid JSON
        # put your logic here ..


, чтобы узнать больше, как настроить ошибки приложения, обратитесь к:

...