0

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

我通常发送类型的数据

{
 password: string,
 email: string
}

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

    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 错误响应中的前端字段?

4

1 回答 1

0

我在这里找到了解决问题的方法: 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.

于 2021-01-07T20:32:03.003 回答