假设HTTP服务器响应POST
响应代码400,因为请求未通过验证(例如未找到电子邮件地址)。如果服务器希望向客户提供更多关于错误性质的信息,应如何返回?对于请求中使用的每种可能的内容类型,理想情况下是否应该存在关联的“错误”内容类型?“POST”验证失败的示例内容类型?
例如,给定的要求
POST /users
Content-Type: application/x-myuser
{
"email": "[email protected]",
"name": "Michael"
}
的响应可能是
400 Bad Request
Content-Type: application/x-myuser-error
{
"email": "Email address [email protected] not found"
}
是否有可公开获得的“错误”内容类型的任何很好的例子?
如果你的响应包含一个自定义的Content-Type头部,你不必猜测'error'字段包含了机器可读的错误 - 尽管这将由MIME类型保证。如果没有它,你认为对特定的状态码/ URL组合的'application/json'响应可以用特定的方式解释,这看起来并不理想。 – mjs 2012-04-23 22:09:11
您忘记了HTTP状态码。 200表示一切正常,3xx表示重定向,而4xx或5xx表示你应该检查错误。这很简单,真的。 – 2012-04-23 22:17:33
我并不忽略状态码,但我不明白它是如何帮助客户解释服务器的响应的。在您的原始答案中,您提供了两个不同验证失败响应的示例。作为一名消费者,您如何知道服务器返回哪种风格?内容类型不是一种很好的方式来确定这一点,就像'image/png'告诉消费者如何解释二进制数据一样? – mjs 2012-04-23 22:45:34