2

我正在使用 Rails 构建一个 API,它可以采用很多参数。理想情况下,如果用户意外地在请求中包含了一个额外的、不必要的参数,这不会使请求模棱两可,我想正常处理它。这显然使我无法简单地写作

  ApiRequest.new(params)

因为如果 params 哈希中有任何额外内容,则会抛出 UnknownAttributeError 。是否有一种拒绝额外属性的简单方法,或者我必须编写一个方法来在创建新对象之前手动验证请求。此外,这是否会被视为 API 的不良做法,如果发生这种情况,我是否应该使用 HTTP 400 进行响应?

谢谢,汤姆

4

1 回答 1

1

感谢 Sergio 的建议,我最终在我的 ApiRequest 类中添加了以下初始化方法,它允许我进行批量分配,而不管哈希中的内容是什么。如果有人使用它,请确保您确保属性在需要时受到 attr_protected。

def initialize(params)
    params.delete_if {|k| !self.respond_to? "#{k}="}
    super
end
于 2012-04-17T15:44:37.670 回答