文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
错误处理
我在 第七章 中定义的错误页面仅适用于使用 Web 浏览器的用户。当一个 API 需要返回一个错误时,它需要是一个“机器友好”的错误类型,以便客户端可以轻松解释这些错误。 因此,我同样设计错误的表示为一个 JSON。 以下是我要使用的基本结构:
{
"error": "short error description",
"message": "error message (optional)"
}
除了错误的有效载荷之外,我还会使用 HTTP 协议的状态代码来指示常见错误的类型。 为了帮助我生成这些错误响应,我将在 app/api/errors.py 中写入 error_response()
函数:
app/api/errors.py :错误响应。
from flask import jsonify
from werkzeug.http import HTTP_STATUS_CODES
def error_response(status_code, message=None):
payload = {'error': HTTP_STATUS_CODES.get(status_code, 'Unknown error')}
if message:
payload['message'] = message
response = jsonify(payload)
response.status_code = status_code
return response
该函数使用来自 Werkzeug(Flask 的核心依赖项)的 HTTP_STATUS_CODES
字典,它为每个 HTTP 状态代码提供一个简短的描述性名称。 我在错误表示中使用这些名称作为 error
字段的值,所以我只需要操心数字状态码和可选的长描述。 jsonify()
函数返回一个默认状态码为 200 的 Flask Response
对象,因此在创建响应之后,我将状态码设置为对应的错误代码。
API 将返回的最常见错误将是代码 400,代表了“错误的请求”。 这是客户端发送请求中包含无效数据的错误。 为了更容易产生这个错误,我将为它添加一个专用函数,只需传入长的描述性消息作为参数就可以调用。 下面是我之前添加的 bad_request()
占位符:
app/api/errors.py :错误请求的响应。
# ...
def bad_request(message):
return error_response(400, message)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论