返回知识库

数据与服务 · 网络与接口

资源不存在404 Not Found

404 表示服务器找不到这个资源:路由可以匹配,但记录查无。它不是 5xx、不是参数格式错误;前端应展示空状态并提供可继续的入口。

失效用户链接怎样恢复成可继续浏览?

打开一个真实的用户资料链接。先让同一页变成 404 空状态,再用它的返回入口恢复;不要把 404 做成状态码选择题。

TEAM DIRECTORY链接可打开

有人发来用户 #9999 的资料链接。打开它:观察路由先命中、记录随后查无;然后从同一页的空状态返回列表。

/users/9999准备打开资料页

路径格式正确,路由能处理它;是否有这位用户还没确定。

第 0 步:路径可被路由处理;打开后才知道资源是否存在。

从面板提炼 404 的边界

刚才的 404 只说明资源查无。相邻状况要分开处理,才不会让前端、缓存和安全判断混淆。

404:查无

路由能处理但记录不存在;前端显示空状态和返回入口。

400:格式错

/users/abc 这类参数不合法,连查询资源都不该开始。

410:永久删除

明确知道资源曾存在又被永久删,才用 Gone。

私有资源

无权查看时也可统一 404,避免用 403 泄露资源存在性。

什么时候返 404,怎么让用户继续

先判断“查无”还是“异常 / 格式 / 业务状态”,再给符合该状态的下一步。

  1. 确认路径是否有路由;未注册路径和公开资源查无都可返回 404。
  2. 把数据库、上游异常分开:异常是 5xx,不能伪装成 404。
  3. 响应使用真实 404,不要返回 200 + {found:false}。
  4. 前端把 404 变成可理解的空状态,提供返回列表、首页或搜索入口。

同一查无结果,正确码决定恢复方式

目标都是让用户不白屏。只改变服务端返回码,前端和安全含义就不同。

正例404 + 空状态

GET /users/9999 → 404。页面说明记录不存在并返回列表,监控不把它当服务故障。

反例200 + 空对象

GET /users/9999 → 200 {found:false}。HTTP 层误判成功,前端还得每个接口额外猜一次。

快速自测

一个商品页曾存在且已被永久删除,希望爬虫停止访问,应返回什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。