HTTP错误码和出现场景

状态代码为3位数字。 1xx:指示信息--表示请求已接收,继续处理。 2xx:成功--表示请求已被成功接收、理解、接受。 3xx:重定向--要完成请求必须进行更进一步的操作。 4xx:客户端错误--请求有语法错误或请求无法实现。 5xx:服务器端错误--服务器未能实现合法的请求。

400错误

"error":"Bad Request",
"message":"Required String parameter 'name' is not present",

场景:

由于语法格式有误,服务器无法理解此请求。比如上面的错误就是我使用springboot发布了一个服务:

@RequestMapping(value = "/adduser", method = RequestMethod.POST)
@ResponseBody
public User addUser(@RequestParam("name") String name, @RequestParam("age") Integer age) {
  User user = new User();
  user.setName(name);
  user.setAge(age);
  return userRep.save(user);
}

在前台通过json格式发送数据导致的。因为@RequestParam是接收表单数据的,无法识别前台发来的json格式。

Content-Type: application/json

{
    "name": "name",
    "age" : 12
}

换成表单格式就可以请求成功了。

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryBRi81vNtMyBL97Rb

------WebKitFormBoundaryBRi81vNtMyBL97Rb
Content-Disposition: form-data; name="name"

name1
------WebKitFormBoundaryBRi81vNtMyBL97Rb
Content-Disposition: form-data; name="age"

12
------WebKitFormBoundaryBRi81vNtMyBL97Rb--

401错误

Unauthorized。该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外若之前已进行过1次请求,则表示用户认证失败。

403 错误

Forbidden。该状态码表明对请求资源的访问被服务器拒绝了。

405错误

"error": "Method Not Allowed",
"message": "Request method 'GET' not supported",

场景:

当发布的服务不支持当前请求形式的时候就会报405错误。比如上面这个错误是由于我通过Spring Boot发布了的服务是post的形式,而我请求的方式是get。

415错误

"error":"Unsupported Media Type",
"message":"Content type 'multipart/form-data;boundary=----WebKitFormBoundaryOTm4oeTbegDmbXAx;charset=UTF-8' not supported"

场景:

不支持的媒体类型。上面的错误是用springboot发布的服务,不支持表单形式的数据,只能解析Content-Type为application/json; charset=utf-8的数据。

@RequestMapping(value = "/adduser", method = RequestMethod.POST)
@ResponseBody
public User addUser(@RequestBody User user) {
  return userRep.save(user);
}

500 错误

Internal Server ERROR。服务器错误

503错误

Service Unavailable。该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

参考:

https://www.jianshu.com/p/218fa50b8f6c

Last updated