返回介绍

错误处理

发布于 2025-01-02 21:54:01 字数 1450 浏览 0 评论 0 收藏 0

我在 第七章 中定义的错误页面仅适用于使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文