API 返回多个错误

我有这个 REST API,它在客户端上执行 CRUD 操作。

当我收到包含无效字段的请求时,例如,超过 100 个字符的“名称”字段,会返回一个 http 错误代码以及详细信息:“名称字段必须少于 100 个字符!”

问题:我必须一次返回多个错误,例如,如果同一请求中的“姓名”和“生日”无效,则必须显示两个错误详细信息。

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

如果我最终实现了多个回报,我会遇到另一个问题:我的项目实现了领域驱动设计。这意味着有一个域(类)并且在构造函数上进行验证。如果出现问题,就会抛出异常!

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

我希望很清楚理解并提前致谢!


PIPIONE
浏览 208回答 3
3回答

素胚勾勒不出你

问题 1:API 返回多个错误是否是一个好的设计?或者我应该依靠 View 来验证这些输入错误并保持我的 API 原样?HTTP 状态代码分为几类。只要所有错误都属于同一类(例如 400 Bad Request),您就可以在响应正文中包含所有错误的描述。问题 2:如果我的流程在第一个异常时中断,我应该如何验证我的所有字段?该问题已在 SO 上多次提出。例如,请参阅此 Q。没有硬性规定。我的建议是异常是针对意外情况的,如果太多的话,try/catch 子句可能会使您的代码变得混乱。所以我通常不会在域方面检查与技术要求接壤的东西,比如最大字段长度。

慕容3067478

输入验证是 REST API 设计的关键点。这对您很重要,因为您可以将自己从不受欢迎的、可能危险的数据中拯救出来,并且您可以帮助您的 API 用户在他们滥用 API 的地方提供明确的消息。回答第一个问题,我不认为收集和返回所有输入验证错误有什么问题,这是一种详尽的方法。另一种已知的方法是返回您遇到的第一个问题。当这很重要时,第二个可以为您节省一些计算时间。要回答第二个问题,您可以简单地将try-catch每个验证步骤包含在子句中,如果遇到某些异常,则附加到错误中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java