API资源未找到的响应规则及特定手机号请求的响应码判定咨询
问题1:当请求的资源未找到时,API应返回何种响应?
按照RESTful API的通用规范,这种场景下标准响应是返回404 Not Found。同时建议在响应体中携带清晰的错误描述,方便客户端快速理解问题,比如:
{ "error": "Resource Not Found", "message": "The requested resource could not be located." }
这样客户端能明确区分“资源不存在”和其他类型的请求错误,更便于后续处理。
问题2:不符合开头要求的手机号请求,该返回400还是404?
咱们先把400 Bad Request和404 Not Found的核心边界理清楚:
400是客户端请求本身存在问题,比如参数格式非法、不符合API预设的业务规则,服务器不需要去执行资源查找,就能直接判定请求无效;404是请求参数合法,但对应的资源确实不存在,服务器已经完成了资源检索动作,最终没找到目标资源。
回到你的场景:手机号1234567890123虽然格式合规,但不符合API要求的“必须以999开头”的业务规则——这属于请求参数不满足API的入参要求,服务器在参数校验阶段就能直接判定请求无效,根本不需要去查询是否有对应的客户详情。所以这种情况应该返回400 Bad Request,同时在响应体里明确说明错误原因,比如:
{ "error": "Invalid Parameter", "message": "Phone number must start with '999'." }
如果是一个以999开头的手机号,但确实没有关联任何客户信息,那这时候才应该返回404 Not Found,因为参数是合法的,只是对应的资源不存在。
内容的提问来源于stack exchange,提问作者rohitt
相关产品推荐
相关产品推荐

