我在理解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
阻止?
答案 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