2015-07-09 17 views
6

Ho molti problemi a comprendere l'API Grape, in particolare route_param e come funziona con solo params.Impossibile capire il parametro route dell'API Grape

Considerate questo codice:

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 

Che strada fa questo blocco produce? Ho capito che questa è una richiesta get, ma perché è incapsulata nel blocco route_param? Perché non può essere nel blocco params?

risposta

7

tuo blocco produce questo percorso:

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

Nota che il codice e il codice qui sotto fanno la stessa cosa e producono lo stesso percorso:

desc "Return a status." 

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

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

È possibile utilizzare route_param ai metodi di gruppo che ricevere gli stessi parametri, ad esempio:

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

Grazie per la vostra sintetica e chiara ex planation. Questo aiuta molto. – kcg5544

+0

Prego. In questo caso, e per aiutare le persone qui su SO, non dimenticare di impostare questa risposta come corretta. :-) – Marlon