У меня есть flask_app.py с обработкой исключений,
from flask import abort
@app.errorhandler(404)
def NotFoundError(e):
return jsonify(error=str(e)), 404
if INDEX_EXTENSION == '':
abort(404, description = "Index Extension cannot be NULL")
если я запускаю приложение в POSTMAN, я получаю сообщение об ошибке в теле ответа POSTMAN, как и ожидалось.
{
"error": "404 Not Found: Index Extension cannot be NULL"
}
Я импортирую функции из другого utils.py внутри flask_app.py, скажем
from utils import loaddata
Если функция вызывает ошибку, я могу поместить функцию в блок try внутри flask_app.py, чтобы передать сообщение об ошибке в POSTMAN,
Не помещая функцию в блок try, можно ли отправить исключение, вызванное внутри функции, в POSTMAN как сообщение jsonify вместо формата HTML, например, внутри функции, которую я имею
if len(data) == 0:
raise Exception('Null Data, Check Data Range')
это передается на консоль как «Traceback (последний последний вызов):........» и в POSTMAN как
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Exception: Null Data, Check Data Range // Werkzeug Debugger</title>
<link rel = "stylesheet" href = "?__debugger__=yes&cmd=resource&f=style.css" type = "text/css">
.....
.
.
.
.
Можно ли это jsonify?
Просто добавьте собственный обработчик ошибок, например:
def loaddata():
messages = []
# do stuff
if len(data) == 0:
messages.append('Null Data, Check Data Range')
return messages
Затем в вашем коде фляги:
dofunc = loaddata() # dofunc equals to error messages with the codes in the function being already executed
# instead of abort
if len(dofunc) > 0:
return jsonify({'error': dofunc})
Демонстрационный код для понимания!