Невозможно вернуть ошибку 404 как json вместо html из приложения Flask-Restful - PullRequest
0 голосов
/ 09 марта 2019

Я работаю над простым тестом Flask REST API и, например, когда я вызываю {{url}} / items, я получаю список элементов. Однако, если вызов передан конечной точке, которая не существует, например, {{url}} / itemsss, тогда я получаю ошибку 404 в html.

Я хотел бы сделать обработку ошибок более удобной и возвращать json вместо html для некоторых ошибок, таких как 400, 404,405 ...

Для 404, например, я попробовал это:

@app.errorhandler(404)
def not_found(e):
    response = jsonify({'status': 404,'error': 'not found',
                        'message': 'invalid resource URI'})
    response.status_code = 404
    return response

Однако это не работает.

Моя проблема похожа на эту: Python Flask - ошибка json и html 404

Я хотел бы знать, если использование чертежей единственный способ сделать это?

Если существует более простой способ вывода ошибки 404 как json?

Например, вместо этого:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<title>404 Not Found</title>

<h1>Not Found</h1>

<p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>

Примерно так:

{

error: true,

status: 404,

code: "error.notFound",

message: "API endpoint not found",

data: { }

}

Я ценю вашу помощь с этим.

1 Ответ

1 голос
/ 10 марта 2019

Обычно, когда мне нужно вернуть пользовательское сообщение об ошибке с Flask-RESTful, я бы сделал что-то вроде:

from flask import make_response, jsonify

def custom_error(message, status_code): 
    return make_response(jsonify(message), status_code)
...