如何在后端使用 Flask 和 Marshmallow 将多个验证错误发送到 React,在前端使用 Axios for React-Native

How to send multiple Validation Errors to React using Flask and Marshmallow in Backend and Axios for React-Native in Frontend

我正在使用 Marshmallow 来验证简单放置请求的传入字段。 现在我正在测试前端的错误处理,以确保我为前端发送了正确的错误消息。

我一般发送

类型的数据
{
 password: string,
 email: string
}

现在 Marshmallow 检查密码是否足够长以及电子邮件是否为电子邮件格式。 我在 expect 语句中收集所有错误并将其发送到前端,如下所示:

    except ValidationError as err:
    return make_response(
        {"errors": err.messages}, status.HTTP_400_BAD_REQUEST
    )

邮递员给我例如此回复:

{
"errors": {
    "email": [
        "Missing data for required field."
    ],
    "password": [
        "Missing data for required field."
    ],
}

}

因此,所有错误消息都收集在错误字段中并发送回前端。

当错误被发送回前端时,我发现了我的错误,我得到的只是这个对象:

  Object {
  "data": null,
  "error": [Error: Request failed with status code 400],
   }

如何正确发送或接收

errors: err.messages

make_response 错误响应中前端的字段?

我在这里找到了问题的解决方案: github.com/axios/axios/issues/960。 显然,您必须访问发送到 axios 的响应对象或错误对象。不需要拦截器。我改变的是这一行,当解决承诺时:

try {
    resolved.data = await promise;
} catch (e) {
    resolved.error = e.response.data;
}

在此之前,我通过以下方式访问错误:

try {
    resolved.data = await promise;
} catch (e) {
    resolved.error = e;
}

错误存储在 response.data