我有一个支持各种媒体类型(MIME类型)的REST服务,例如application/xml
,application/json
,application/vnd.ms-excel
,text/plain
。浏览器请求以及应用程序代码中的HTTP客户端使用此服务。
但是,在使用此REST服务时,我的客户端代码需要以一致的方式处理错误。要做到这一点,错误有效负载必须是一致的媒体类型,如JSON,因此可以反序列化。
所以我的问题是,如果我返回的错误有效负载与请求的媒体类型不一致,我是否会破坏任何RESTful最佳实践?如果没有,我应该使用什么格式? JSON?
更新
澄清一下,当我说错误有效载荷时,我指的是状态不是200且需要包含错误详情的响应主体。
答案 0 :(得分:2)
首先,错误不必包含有效负载。仅使用空响应主体返回状态代码(如401)是完全合理的。但是,如果需要返回有效负载,则错误的响应应与预期的成功类型相同。换句话说,如果客户端请求JSON,则在成功和错误时都返回JSON。同样,如果请求XML,则错误响应应为XML格式。