假设我有一个采用整数作为参数的REST端点:
/makeWaffles?numberOfWaffles=3
在这种情况下,我希望数字是正数,因为我不能将华夫饼的数量设为负数(而请求0个华夫饼是浪费时间)。所以我想拒绝任何不包含正整数的请求。我还想拒绝超过某个最大整数的请求(现在说的是MAX_INTEGER)。
如果有人请求华夫饼的数量为非正数,我应该返回HTTP 400(错误请求)状态吗?我最初的想法是:对我来说,这不是有效的数字,无法完成请求。但是,RFC并未将业务规则作为抛出该规则的理由:
400(错误请求)状态代码表示服务器由于某些原因(例如格式错误的请求语法,无效的请求消息框架或欺骗性的请求路由)而被视为客户端错误,因此服务器无法处理该请求。
业务规则不属于这三个示例中的任何一个。从语法上讲,它是正确的,并且具有正确的框架,并且不是欺骗性的请求路由。
如果参数在语法上正确但违反业务规则,那么我应该返回HTTP 400(错误请求)状态吗?还是有更适合返回的身份?