Grape的路由:特定字符串或字符串数​​组

时间:2016-06-29 11:32:28

标签: ruby-on-rails ruby grape grape-api

我想为Grape gem创建一个路由,以便路由接受字符串数组或具有特定预定义值的单个字符串。从文档中不清楚如何做到这一点。

你的建议?

更新:

我希望status可以传递单个值status1,也可以传递给值可以是任意且未知的数组。我结合这些?

params do
  requires :status, type: Symbol, values: [:status1]
  requires :status, type: Array[String]
end

1 个答案:

答案 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