为了账号安全,请及时绑定邮箱和手机立即绑定

API 返回多个错误

API 返回多个错误

PIPIONE 2021-09-03 14:48:45
我有这个 REST API,它在客户端上执行 CRUD 操作。当我收到包含无效字段的请求时,例如,超过 100 个字符的“名称”字段,会返回一个 http 错误代码以及详细信息:“名称字段必须少于 100 个字符!”问题:我必须一次返回多个错误,例如,如果同一请求中的“姓名”和“生日”无效,则必须显示两个错误详细信息。问题 1:API 返回多个错误是否是一个好的设计?或者我应该依靠 View 来验证这些输入错误并保持我的 API 原样?如果我最终实现了多个回报,我会遇到另一个问题:我的项目实现了领域驱动设计。这意味着有一个域(类)并且在构造函数上进行验证。如果出现问题,就会抛出异常!问题 2:如果我的流程在第一个异常时中断,我应该如何验证我的所有字段?我希望很清楚理解并提前致谢!
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

问题 1:API 返回多个错误是否是一个好的设计?或者我应该依靠 View 来验证这些输入错误并保持我的 API 原样?

HTTP 状态代码分为几类。只要所有错误都属于同一类(例如 400 Bad Request),您就可以在响应正文中包含所有错误的描述。

问题 2:如果我的流程在第一个异常时中断,我应该如何验证我的所有字段?

该问题已在 SO 上多次提出。例如,请参阅此 Q。

没有硬性规定。我的建议是异常是针对意外情况的,如果太多的话,try/catch 子句可能会使您的代码变得混乱。所以我通常不会在域方面检查与技术要求接壤的东西,比如最大字段长度。


查看完整回答
反对 回复 2021-09-03
?
慕容3067478

TA贡献1773条经验 获得超3个赞

输入验证是 REST API 设计的关键点。这对您很重要,因为您可以将自己从不受欢迎的、可能危险的数据中拯救出来,并且您可以帮助您的 API 用户在他们滥用 API 的地方提供明确的消息。

回答第一个问题,我不认为收集和返回所有输入验证错误有什么问题,这是一种详尽的方法。另一种已知的方法是返回您遇到的第一个问题。当这很重要时,第二个可以为您节省一些计算时间。

要回答第二个问题,您可以简单地将try-catch每个验证步骤包含在子句中,如果遇到某些异常,则附加到错误中。


查看完整回答
反对 回复 2021-09-03
  • 3 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信