对私有RESTAPI的调用返回400或500是否重要?
我们有一个私有的RESTAPI,它被锁定,只有我们控制的软件才能调用,而不是公众。许多端点采用JSON负载。如果反序列化JSON负载失败(例如负载具有对私有RESTAPI的调用返回400或500是否重要?,rest,http-status-codes,Rest,Http Status Codes,我们有一个私有的RESTAPI,它被锁定,只有我们控制的软件才能调用,而不是公众。许多端点采用JSON负载。如果反序列化JSON负载失败(例如负载具有int,其中预期为Guid),将引发异常,API将返回500内部服务器错误。从技术上讲,在这种情况下,它应该返回400个错误请求 如果不知道在这种情况下需要付出多少努力才能确保返回400,那么更改API以返回400是否有好处?调用软件和QA是唯一看到此错误的实体,并且仅当软件发送的数据与预期模型不匹配时才会发生此错误,这是一个关键缺陷。我认为这是额
int
,其中预期为Guid
),将引发异常,API将返回500内部服务器错误。从技术上讲,在这种情况下,它应该返回400个错误请求
如果不知道在这种情况下需要付出多少努力才能确保返回400,那么更改API以返回400是否有好处?调用软件和QA是唯一看到此错误的实体,并且仅当软件发送的数据与预期模型不匹配时才会发生此错误,这是一个关键缺陷。我认为这是额外的努力和维护,毫无收获
从REST的角度来看,400和500之间的区别会有很大帮助吗?:
(在我维护的系统中,我们使用通用监控来区分4xx和5xx响应,并使用不同的阈值来确定是否应该呼叫我。正如您可能想象的那样,我投入了相当多的精力来优化该系统。)对其投了赞成票。我认为错误代码的日志记录很重要,监视API上的500个错误以及内部错误也很好。问题中没有提到代理或负载平衡器等复杂问题。有了这种方法,在任何可能的情况下,我们都可以想象如果陨石撞击数据中心该怎么办。IMHO,在这里询问这种改变的好处,而不是QA和使用API实现调用软件的人,这是非常奇怪的。使用API的人可以获得更精确的好处信息。此外,有人可能期望得到500而不是400。在没有通知和讨论的情况下改变这一点可能会破坏某人已经在运行的解决方案。