【问题标题】:how to handle response types with same status code but different meanings如何处理具有相同状态码但含义不同的响应类型
【发布时间】:2021-04-01 18:36:15
【问题描述】:

我正在构建一个 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.x django api flask


    【解决方案1】:

    您的后端不应该发送用来指导客户端如何显示响应或错误异常的数据。客户端独自负责如何显示消息,包括错误消息。客户端 UI 可能会随时间变化,甚至会因设备而异。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-19
      • 2012-07-27
      • 2017-11-23
      • 2018-11-15
      • 2023-03-08
      • 2018-05-26
      • 1970-01-01
      • 2018-05-06
      相关资源
      最近更新 更多