You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

深度分页超出限制时,API应返回何种HTTP状态码?

API页码超限请求的状态码选择

我们有一个API,希望拒绝页码超过99的请求,示例如下:

GET example.com/users?page[number]=99 # 允许,返回200 OK
GET example.com/users?page[number]=100 # 拒绝,返回???

我们正在评估以下状态码选项,想知道哪个最合适:

  • 400:过于宽泛
  • 403:最有可能适用
  • 410:已消失,或许可行,但并非临时情况
  • 422:接近匹配,但描述为“服务器无法处理包含的指令”,不够准确
  • 429:不符合Retry-After机制

状态码分析与结论

逐个分析选项:

  • 400 Bad Request:仅表示请求格式或语法错误,但页码超限是明确的业务规则限制,不属于格式问题,用这个状态码无法精准传达拒绝原因,因此不合适。
  • 410 Gone:用于标记资源永久消失的场景,而这里只是不允许访问超过99页的内容,资源本身并未消失,完全不匹配,直接排除。
  • 429 Too Many Requests:针对请求频率过高的限流场景,需要搭配Retry-After响应头告知客户端重试时间,和页码超限的场景无关,排除。
  • 422 Unprocessable Content:适用于请求格式正确但语义无法被服务器处理的情况(比如字段值不符合业务规则但格式合法),但页码超限更偏向于访问范围的限制,而非请求内容无法处理,描述不够精准。

最终推荐403 Forbidden:这个状态码的核心含义是服务器理解请求,但因权限或访问范围限制拒绝执行。页码超过99属于API设定的访问范围边界,用403能准确传达“你无权/不允许访问该页码内容”的意图。同时建议在响应体中补充明确的错误信息,例如:

{"error": "页码不能超过99,当前请求页码为100"}

让客户端能快速定位问题。

内容的提问来源于stack exchange,提问作者ecoologic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:17:13