无法理解Grape API路由参数

时间:2015-07-09 17:00:29

标签: ruby routes grape-api

我在理解Grape API方面遇到了很多麻烦,特别是route_param以及它如何与params一起使用。

考虑以下代码:

desc "Return a status."
params do
 requires :id, type: Integer, desc: "Status id."
end
route_param :id do
 get do
  Status.find(param[:id])
 end
end

这个街区产生什么路线?我知道这是get请求,但为什么它包含在route_param块中?为什么不能在params阻止?

1 个答案:

答案 0 :(得分:8)

你的街区产生了这条路线:

http://yourdomain.com/<resource>/<id>

请注意,您的代码和下面的代码执行相同的操作并生成相同的路径:

desc "Return a status."

params do
  requires :id, type: Integer, desc: "Status id."
end

get ':id' do
  Status.find(params[:id]) 
end

您可以使用route_param对接收相同参数的方法进行分组,例如:

resource :categories do
  route_param :id do
    get do # produces the route GET /categories/:id
    end

    put do # produces the route PUT /categories/:id
    end
  end
end