Rest中的错误处理
有许多方法可以处理RESTful api中的错误。由于系统需求和领域策略,有时需要简化解决方案。 堆栈溢出是使用自己的api对所有错误使用http状态代码400进行简化,然后将自己的错误代码嵌入响应中Rest中的错误处理,rest,http-status-codes,restful-architecture,Rest,Http Status Codes,Restful Architecture,有许多方法可以处理RESTful api中的错误。由于系统需求和领域策略,有时需要简化解决方案。 堆栈溢出是使用自己的api对所有错误使用http状态代码400进行简化,然后将自己的错误代码嵌入响应中 这是一个遵循REST模式的解决方案,但可能还有其他优势。我能想到的一个优点是,响应中的错误代码可以比只使用http协议中可用的错误更加系统特定。使用Stackoverflow模式处理REST错误还有其他好处吗?我认为您必须利用HTTP状态代码通知REST客户端,如果处理成功,如果发生错误,但这对应
这是一个遵循REST模式的解决方案,但可能还有其他优势。我能想到的一个优点是,响应中的错误代码可以比只使用http协议中可用的错误更加系统特定。使用Stackoverflow模式处理REST错误还有其他好处吗?我认为您必须利用HTTP状态代码通知REST客户端,如果处理成功,如果发生错误,但这对应于高级提示,会发生什么 您通常需要关联一个错误负载,该负载提供了对错误的最详细描述,以及一些结构化的内容,以便编程REST客户机能够理解和处理这些错误。您可以自由选择这种有效载荷的结构 以下是我通常使用的JSON格式,但它没有链接到特定格式:
{
errors: [
{
"message": "my message",
"code": "ERR12",
},
{
"message": "my message",
"code": "ERR13",
"field": "fieldName"
}
]
}
有些错误可能是一般性的,但也会链接到请求表示的特定字段
此外,我认为我们可以利用其他4xx代码,因为代码400有点通用。以下是一些可以使用的方法:
400:通知请求不正确的一般性错误
405:如果您尝试使用资源不支持的HTTP方法
409:乐观锁定错误
412:如果在执行资源方法的处理之前先决条件失败
415:如果提供的表示的格式不正确或请求的媒体类型不受支持
422:验证输入表示时出错。虽然它来自WebDAV,但您可以使用它,例如GithubAPI。
您可以注意到,这些方法405、415中的一些本机由REST框架(例如Restlet)支持
在Restlet的上下文中,可以按照以下答案中所述进行错误管理:。即使没有这个框架,这也可以为您的实现提供一些提示
希望有帮助,
蒂埃里