Rails RESTful API:内容协商失败时的正确错误格式

时间:2016-01-21 09:19:51

标签: ruby-on-rails api rest

当内容协商失败时,RESTful API必须使用什么错误格式(ActionController::UnknownFormat被引发):

  • 当控制器响应唯一的一种格式(例如JSON)并且用户请求另一种格式(例如XML)时,是否应该将错误生成为JSON对象或XML?
  • 当控制器响应多种格式并且用户没有请求它们时,应该在错误生成期间使用哪一种:控制器中的一个“已知”或用户请求的那个?

1 个答案:

答案 0 :(得分:1)

我认为您没有义务以与请求相同的格式回复任何无效请求。想象一下,使用未知二进制格式的有效负载获取请求 - 在这种情况下你应该做什么。

ActionController::UnknownFormat should会触发406 Not Acceptable响应,可能会在Rails 5中。

您应该抢救ActionController::UnknownFormat并使用正确的HTTP代码进行回复,并设置一个Accept标头,列出您的API支持的所有格式(如果Rails默认不这样做,我是不确定)