有人可以澄清我应该从以下情况中获得哪些状态代码?例如,我发送的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或其他选项?什么反应应该是正确的?
答案 0 :(得分:0)
如果JSON 语法无效,请返回400
。如果JSON 语法有效但其内容无效,请返回422
以指示服务器无法处理请求实体。
请参阅RFC 4918中的以下引用(针对您的情况,只需阅读 JSON ,当它说 XML 时):
11.2. 422 Unprocessable Entity
422
(不可处理的实体)状态代码表示服务器 了解请求实体的内容类型(因此a415
(不支持的媒体类型)状态代码不合适),以及 请求实体的语法是正确的(因此400
(错误请求) 状态代码不合适但是无法处理包含的内容 说明。例如,如果是XML,则可能会出现此错误情况 请求正文包含格式正确(即语法正确),但是 语义错误的XML指令。