我想为Grape gem创建一个路由,以便路由接受字符串数组或具有特定预定义值的单个字符串。从文档中不清楚如何做到这一点。
你的建议?
更新:
我希望status
可以传递单个值status1
,也可以传递给值可以是任意且未知的数组。我结合这些?
params do
requires :status, type: Symbol, values: [:status1]
requires :status, type: Array[String]
end
答案 0 :(得分:1)
参数必须在参数块中仅声明一次。如果你宣布它两次,那么Grape只会使用一个。在您的情况下,有两个选项可以解决您的问题。
第一个选项:声明两个参数并将它们定义为互斥。这意味着用户只能通知其中一个。
params do
requires :status1, type: Symbol, values: [:status1]
requires :status2, type: Array[String]
mutually_exclusive :status1, :status2
end
第二个选项:仅声明一个参数并将其类型设置为对象。在方法体中,检查它是否是数组或字符串。如果它是一个字符串,请验证它是否具有正确的值。
params do
requires :status, type: Object
end
get 'testing' do
if params[:status].class.name.eql? "Array" then
elsif params[:status].class.name.eql? "String" then
end
end