RESTful服务,验证失败后如何响应?

kat*_*tit 19 rest http

我有一些服务,需要一些实体,需要保存/更新这个实体:

http://myhost.com/rest/entity
Run Code Online (Sandbox Code Playgroud)

我使用POST并提交JSON.在内部服务中,它检测到传递的实体不好.无效,订单传入不存在的客户等.

我该怎么回复?HttpCode.NotFound?或者其他人?你怎么回答这些事情?

Jul*_*hke 31

422无法处理的实体,在WebDAV(RFC 4918)中定义:

422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此400(错误请求) )状态代码不合适)但无法处理包含的指令.例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能发生此错误情况.

  • 我真的很喜欢这个.它可能会与纯粹主义者不受欢迎,但使用与格式错误的请求相同的状态会更好. (3认同)

Ser*_*sev 25

在我们的项目中,我们执行以下操作:

  1. 将响应代码设置为HTTP 400 Bad Request
  2. 将响应正文设置为以下JSON: {"message":"%extended error message here%"}

但它确实非常主观.

此外,我建议阅读这篇关于RESTfull错误处理的博客文章 - 它描述了许多可用选项,因此您可以根据自己的喜好选择一些内容.