2016-01-21 79 views
1

必须通过REST的API时的内容协商失败,可以使用什么错误格式(ActionController::UnknownFormat升高):Rails的REST的API:正确的错误格式的内容时,协商失败

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

回答

1

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

ActionController::UnknownFormatshould触发一个406 Not Acceptable响应,可能会在Rails的5

你应该救ActionController::UnknownFormat和设置Accept标题列出所有格式适当的HTTP响应代码,以及你的API支持(如果没有按滑轨默认情况下是这样做的,我不确定)

+0

Rails 4.1.1默认响应'ActionController :: UnknownFormat': - 带有xml/yaml对象,如果'application/xml'或'application/yaml'被要求; - 否则它会用空的HTML页面以Content-Type:text/html标题响应 – DreamWalker