请求正文中的错误时的HTTP状态代码

时间:2018-04-04 10:13:16

标签: http http-status-codes http-status-code-400 http-status-code-422

有人可以澄清我应该从以下情况中获得哪些状态代码?例如,我发送的POST请求有这样的正文格式:

{
  "id": 321,
  "username": "tombrown",
  "email": "tombrown@gmail.com",
  "password": "qwerty123",
  "activated": true 
}

所以问题是:

1)如果指定了错误类型的数据,服务器是否应该返回400,例如" id":“threetwoone”而不是int,"激活":“是”而不是boolean等。或者服务器应该在这里返回422?

2)“id”值应该是int,但实际上它是long int,例如9223372036854774700。

3)身体中缺少某些区域,例如我试着发送:

{
  "id": 321,
  "username": "tombrown",
  "activated": true 
}

这些示例是否会导致400,422或其他选项?什么反应应该是正确的?

1 个答案:

答案 0 :(得分:0)

如果JSON 语法无效,请返回400。如果JSON 语法有效但其内容无效,请返回422以指示服务器无法处理请求实体。

请参阅RFC 4918中的以下引用(针对您的情况,只需阅读 JSON ,当它说 XML 时):

  

11.2. 422 Unprocessable Entity

     

422(不可处理的实体)状态代码表示服务器     了解请求实体的内容类型(因此a     415(不支持的媒体类型)状态代码不合适),以及     请求实体的语法是正确的(因此400(错误请求)     状态代码不合适但是无法处理包含的内容     说明。例如,如果是XML,则可能会出现此错误情况     请求正文包含格式正确(即语法正确),但是     语义错误的XML指令。

相关问题