为什么 Flask 中的中止函数不采用处理程序?



我正在用python和flask开发一个REST API,我把项目留在这里Github项目

我在应用程序中添加了错误处理程序,但是当我运行一个abort函数时,它会给我一条来自Flask的默认消息,而不是我定义的结构。

我将保留处理程序的路径以及我从哪里运行中止。处理程序中止(400)

瓶消息

好的,有人告诉我答案可能在另一个问题中。

要做的是覆盖Flask Api对象的handler函数。

这样,您就可以配置每个查询的回答格式,即使是包含错误的查询。

def response_structure(code_status: int, response=None, message=None):
if code_status == 200 or code_status == 201:
status = 'Success'
else:
status = 'Error'
args = dict()
args['status'] = status
if message is not None:
args['message'] = message
if response is not None:
args['response'] = response
return args, code_status

class ExtendAPI(Api):
def handle_error(self, e):
return response_structure(e.code, str(e))

一旦函数被覆盖,必须使用这个新函数来创建

users_bp = Blueprint('users', __name__)
api = ExtendAPI(users_bp)

有了这个,我们就可以使用flask函数来响应我们定义的结构。

if request.args.get('name') is None:
abort(400)

响应JSON

{
"response": "400 Bad Request: The browser (or proxy) sent a request that this server could not understand.",
"status": "Error"
}

最新更新