无法理解Grape API路由参数

kcg*_*544 6 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
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*lon 9

你的街区产生这条路线:

http://yourdomain.com/<resource>/<id>
Run Code Online (Sandbox Code Playgroud)

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

desc "Return a status."

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

get ':id' do
  Status.find(params[:id]) 
end
Run Code Online (Sandbox Code Playgroud)

您可以用来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
Run Code Online (Sandbox Code Playgroud)