1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# coding=utf-8
from flask import jsonify
from werkzeug.exceptions import HTTPException
from pysite.base_route import ErrorView
class APIErrorView(ErrorView):
name = "api_error_all"
error_code = range(400, 600)
def __init__(self):
# Direct errors for all methods at self.return_error
methods = [
'get', 'post', 'put',
'delete', 'patch', 'connect',
'options', 'trace'
]
for method in methods:
setattr(self, method, self.return_error)
def return_error(self, error: HTTPException):
"""
Return a basic JSON object representing the HTTP error,
as well as propagating its status code
"""
message = str(error)
code = 500
if isinstance(error, HTTPException):
message = error.description
code = error.code
return jsonify({
"error_code": -1,
"error_message": message
}), code
|