首页 > 解决方案 > 如何处理具有相同状态码但含义不同的响应类型

问题描述

我正在构建一个 API,在某些情况下,我们的前端可以向 API 发出请求,从表单发送数据。在后端检查数据并返回响应状态码 200、201 或 400。

例如,状态码 200 可能意味着从前端到 API 的请求是好的,但有来自验证数据的建议。(用户提交数据,后端验证并为用户提供建议)。我们还可以返回 200,所有内容都检查完毕,并且用户再次确认验证的数据看起来不错。状态码 400 可能表示请求错误,但由于缺少字段、空字段或请求中没有足够的数据导致后端无法验证表单数据。

我目前的方法是发回带有消息、类型和状态代码的响应。例如,从上面:

{"message": "The username should be: xxxx", "type": 0}, 200
{"message": "Everything looks good!", "type": 1}, 200
{"message": "Missing field", "type": 2}, 400
{"message": "Submitted data couldn't be validated. Try again?", "type": 3}, 400

然后在前端,我可以查看类型属性和状态代码来决定向用户显示什么消息或如何显示。

这听起来像是一个好方法还是可以改进?请分享有关最佳实践的任何想法或建议。

标签: python-3.xdjangoapiflask

解决方案


您的后端永远不应发送旨在指导客户端如何显示响应或错误异常的数据。客户端独自负责如何显示消息,包括错误消息。客户端 UI 可以随时间变化,甚至在设备之间变化。

如果用户输入了一些无效数据,您可以执行请求,当您返回响应时,您只需在适当的位置显示错误消息。验证应该在客户端完成,当输入数据不正确时不允许发送请求。您的后端可以并且应该仍然验证正在发送的数据并在不正确时返回 400,但客户端应用程序应该只具有一个通用错误处理程序。如果您在客户端进行验证,这确实不应该发生。


推荐阅读