我有一个返回Voucher
对象的api端点。
凭证从第三方检索。
我们检查/验证了一些条件,例如过期日期。
因此,如果从第三方检索到客户端应用程序请求/voucher/1234
ID为1234的凭证。
如果过期日期是<现在,我们需要返回一个错误。
我想返回标准的HTTP错误。
哪种最合适?
我最初认为412会,但现在我不确定。
答案 0 :(得分:4)
当服务器不满足请求标头中提供的前提条件之一(If-Match,If-Modified-Since等)时,使用HTTP 412。
非常通用的方法是在无效字段上返回HTTP 400 +特定错误消息。
然而,越来越多的populer API开始使用HTTP扩展更精细,并向客户端提供错误反馈。 Twitter和GitHub使用WebDAV HTTP扩展中定义的HTTP 422 Unprocessable Entity。 HTTP 422 says that :
422(不可处理实体)状态代码表示服务器 了解请求实体的内容类型(因此a 415(不支持的媒体类型)状态代码不合适),和 请求实体的语法是正确的(因此是400(错误请求) 状态代码不合适但是无法处理包含的内容 说明。例如,如果是XML,则可能会出现此错误情况 请求正文包含格式正确(即语法正确),但是 语义错误的XML指令。
您的服务器了解用户想要做什么并了解数据包含的内容,它不会让您这样做。所以,Http 422看起来很适合你。