2016-12-06 2 views
0

ich eine Anforderung habe, wo Benutzer-URL in diesem Format weitergeben kann:Traube mit dynamischen Routen

http:site.com/[action]/[subject]?[option]=[value]

zum Beispiel alle der unten gilt Urls:

http://example.com/trigger/a/b/c 
http://example.com/trigger/a 
http://example.com/trigger/a/b?something=value 
http://example.com/trigger/any/thing/goes/here 

Ich habe ein grape Ressource wie folgt:

class Test < Grape::API 
    params do 
    optional :option, type: String 
    end 

    get '/trigger/:a/:b/:c' do 
    { 
     type: 'trigger', 
     a: params[:a], 
     b: params[:b], 
     c: params[:c], 
     option: params[:option] 
    } 
    end 
end 

Also, wenn ichbesuchedann werde ich bekommen

{ 
    "type": "trigger", 
    "a": "1", 
    "b": "2", 
    "c": "3", 
    "option": "something" 
} 

Erwartetes Verhalten:

Gebrauch sollte alles liefern können nach /trigger/

http://example.com/any/thing/goes/here/1/2/3?other=value&goes=here 

Update:

ich diese Lösung gefunden (How do we identify parameters in a dynamic URL?) Für die Schienenroute möchte ich dieses Verhalten in grape.

dank

Antwort

0

Nun, ich auf der Suche war eigentlich für wildcards mit matching params

get "trigger/*subject" do 
    { 
    params: params[:subject] 
    } 
end 

Jetzt wird es auf Weg antworten wie:

curl http://example.com/trigger/subject/can/be/anything 

Ausgang:

{ 
params: "subject/can/be/anything" 
} 

Dank Neils Antwort Wildcard route in Grape