我正在阅读Miguel Grinberg撰写的Flask Web开发书籍的RESTful Web服务章节,他提到Flask可以自己生成错误,也可以由Web服务明确生成错误。
对于Flask生成的错误,他使用如下错误处理程序:
@main.app_errorhandler(404)
def page_not_found(e):
if request.accept mimetypes.accept_json and \
not request.accept_mimetypes.accept_html:
response = jsonify({'error': 'not found'})
response.status_code = 404
return response
return render_template('404.html'), 404
虽然Web服务生成错误,但没有错误处理程序:
def forbidden(message):
response = jsonify({'error': 'forbidden', 'message': message})
response.status_code = 403
return response
我真的不明白烧瓶生成错误与Web服务生成错误之间的区别。
答案 0 :(得分:0)
第一个是如何为Flask引发的错误制作自定义处理程序的示例。例如,如果它无法识别路径,则会使用默认的“未找到”消息引发404错误。自定义处理程序允许您仍然返回404错误,而是使用您自己的,更好看的响应。
第二个是如何更改响应代码的示例,而不处理先前引发的错误。在此示例中,如果用户没有权限,您可能会从另一个视图return forbidden()
。响应将有一个403代码,您的前端将知道如何处理。