You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

400与404 HTTP错误的区别是什么?请举例说明二者差异

400 Bad Request vs 404 Not Found:核心区别与实用示例

Hey 大家好!作为天天跟HTTP状态码打交道的开发者,我来给大家掰扯清楚400和404这两个常见错误的本质区别,再配上实际场景的例子,保证一看就懂。

一、400 Bad Request:请求本身就有问题

这个状态码的核心是:服务器根本没法理解你的请求,因为请求的语法、格式或者数据是无效的。简单说就是你给服务器发了一堆“乱码”或者不符合规则的内容,服务器连处理的第一步都做不了。

常见示例:

  • 提交表单时,必填的邮箱字段填成了alice@example(缺少域名后缀),或者手机号填了123abc,服务器校验不通过,返回400。
  • 发送JSON格式的API请求时,写错了语法:比如{"username": "Bob", password: "123456"}这里password没加双引号,服务器解析JSON失败,直接返回400。
  • 请求参数类型错误:比如调用/api/products?price=cheap,服务器要求price是数字,你传了字符串,服务器没法处理,返回400。

二、404 Not Found:资源找不到,但请求是合法的

这个状态码的意思是:服务器完全能看懂你的请求,但就是找不到你要的东西。请求本身是符合规则的,但目标资源要么不存在,要么路径写错了。

常见示例:

  • 手动输入URL时拼错了:比如想访问某个平台的回答,却写成了https://example.com/answer/1234567890abc,这个ID的回答根本不存在,服务器返回404。
  • 请求已被删除的资源:比如之前有个用户ID是100的接口/api/users/100,但这个用户已经被删除了,现在再请求这个地址,服务器返回404。
  • 路由配置错误:后端开发时漏写了/api/comments的路由,当你请求这个地址时,服务器找不到对应的处理逻辑,返回404。

三、关键区别总结

为了更直观,我整理了一个对比表:

对比维度400 Bad Request404 Not Found
问题根源请求本身无效(语法/格式错误)请求合法,但目标资源不存在
责任方客户端(发送了错误的请求)可能是客户端(URL拼写错)或服务器(资源被删)
服务器处理状态无法解析请求,直接拒绝处理能正常解析请求,只是找不到资源

打个通俗的比方:400就像你给外卖员递了一张地址写得乱七八糟、连小区名字都写错的订单,外卖员根本不知道要送哪儿;404就像你写的地址格式完全正确,但这个地址是个已经拆了的老小区,外卖员找不到地方。

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

火山引擎 最新活动