API参数值与端点不匹配时,应使用何种正确HTTP错误码?
应该返回HTTP 400而非403
从HTTP状态码的语义和业务场景匹配度来看,/fruit?Farm=KingRanch返回400 Bad Request是更合适的选择,理由如下:
400对应请求本身错误:这个场景里,参数
Farm=KingRanch虽为真实存在的农场,但不符合/fruit端点的业务规则(该农场属于肉类范畴,而非水果),本质是参数语义不符合端点要求,属于请求本身的错误,完全契合400的适用场景。返回时可在响应体明确提示:KingRanch是肉类农场,不属于水果农场范畴,请传入合法的水果农场参数,让客户端清晰知晓问题所在。403语义为权限禁止:403用于服务器理解请求,但因权限限制拒绝执行的场景,比如用户无访问
/fruit端点的权限。而当前场景下客户端有权访问该端点,只是参数值不符合业务规则,用403会误导客户端,使其误以为是权限问题而非参数错误,增加排查成本。
内容的提问来源于stack exchange,提问作者ngtszman
相关产品推荐
相关产品推荐

