2015-07-09 15 views
6

Tôi gặp rất nhiều khó khăn khi hiểu rõ API Grape, cụ thể là route_param và cách hoạt động với chỉ params.Không thể hiểu được tham số tuyến API Grape

xem xét mã này:

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 

đường gì khối này tạo ra? Tôi nhận được rằng đây là yêu cầu get, nhưng tại sao nó được gói trong khối route_param? Tại sao nó không thể ở trong khối params?

Trả lời

7

khối của bạn tạo ra tuyến đường này:

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

Lưu ý rằng mã của bạn và mã bên dưới làm điều tương tự và sản xuất cùng một tuyến đường:

desc "Return a status." 

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

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

Bạn có thể sử dụng route_param với các phương pháp nhóm nhận các thông số tương tự, ví dụ:

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 
+0

Cảm ơn bạn đã nêu rõ ràng và rõ ràng kế hoạch. Điều này giúp ích rất nhiều. – kcg5544

+0

Bạn được chào đón. Trong trường hợp này, và để giúp mọi người ở đây trên SO, đừng quên đặt câu trả lời này là đúng. :-) – Marlon

Các vấn đề liên quan