【发布时间】:2010-11-09 11:28:00
【问题描述】:
我目前正在开发一个 REST API,其核心功能之一是使用各种 HTTP 状态代码来返回状态/错误信息,其中一些可能是扩展信息(例如,如果未找到项目,其他一些类似的项目)将在响应正文中。
除非 HTTP 状态代码为 200 OK(即使是 201 Created 成功代码也可能导致 Flash 认为它是一个错误)。
所以我的问题是,有没有一种标准的方式允许这种类型的客户端请求所有状态码都是 HTTP 200,并以另一种方式指示 真实 状态码?
我想到的一个解决方案是,在 HTTP Accept-* 系列标头的模式中,使用 X-Accept-Status 扩展标头来指定可以处理哪些状态代码,例如Flash 会发送...
X-Accept-Status: 200
...然后任何不在此列表中的状态码将被映射到一个状态码,并在响应正文中返回错误,可能带有另一个扩展头指示真实状态码,例如
X-HTTP-Status-Code: 404 Not Found
这一切看起来有点可怕,并且违反了协议,但如果您有无法使用协议属性的客户端,那么这是不可避免的。我只是在寻找有点像X-HTTP-Method-Override 的东西(对于无法发送PUT/DELETE 请求的客户端,这是一种解决协议的“标准”方式),但对于无法理解状态代码的客户端。
【问题讨论】:
标签: asp.net-mvc flash http rest error-handling