REST 服务错误响应负载是否应与媒体类型一致

Should a REST Service Error Response Payload be Consistent with the Media Type

我有一个支持各种媒体类型(MIME 类型)的 REST 服务,例如 application/xmlapplication/jsonapplication/vnd.ms-exceltext/plain。此服务由浏览器请求以及应用程序代码中的 HTTP 客户端使用。

但是,在使用此 REST 服务时,我的客户端代码需要以一致的方式处理错误。为此,错误负载必须采用一致的媒体类型,例如 JSON,以便可以反序列化。

所以我的问题是,如果我 return 错误负载与请求的媒体类型不一致,我是否违反了任何 RESTful 最佳实践?如果不是,我应该使用什么格式? JSON?

更新

澄清一下,当我说错误负载时,我指的是状态不是 200 并且需要包含错误详细信息的响应正文。

首先,错误不一定包含负载。只 return 像 401 这样的状态代码和一个空的响应主体是完全合理的。但是,如果您需要 return 负载,则错误响应应与成功的预期类型相同。换句话说,如果客户端请求 JSON、return JSON,无论是成功还是错误。同样,如果请求 XML,则错误响应应在 XML.