2013-06-04 4 views
6

den folgenden naiven Code Angenommen:Handhabung komplexe GET-Parameter mit Slim-Framework HTTP Routing

$app->get('(/store(/:url)+)', function($url = NULL) use ($app) 
    { 
     // Execute actions on $url 
    }); 

Die oben arbeitet für die folgende fein:

http://localhost/api/0001/store/url-data 

aber es funktioniert nicht für:

http://localhost/api/0001/store/http%3A%2F%2Fexample.com%2FSomething 
http://localhost/api/0001/store/http://example.com/Something 

// and other variations 

Ich möchte eine vollständige codierte URI übergeben, um auf der Serverseite zu behandeln. Wie kann ich das mit Slim schaffen?

Hinweise:

Andere Arten von HTTP-Requests (POST, PUT) nicht für dieses gegebene Problem umgehen.

Es kann auf der anderen Seite durch Neuformatierung (Serialisierung) der URI gelöst werden, aber ich wünsche, dass dies meine letzte Zuflucht sein wird.

Wichtige Bearbeiten - Antwort

So stellt sich die oben heraus ist ein Bug im Rahmen der derzeit getestet wird und hoffentlich fixiert und in Kürze veröffentlicht. Ich habe das Problem vorübergehend gelöst, indem ich den URI serialisiert habe, bevor er die Serverseite erreicht.

+3

Sie dürfen Ihre eigenen Fragen beantworten und Ihre eigene Antwort akzeptieren^_^ –

+1

Das Übergeben einer URL als Teil einer erholsamen URL ist nicht die beste Lösung ... Ich empfehle Ihnen stattdessen, einen get-Parameter zu verwenden. –

Antwort

0

Es stellt sich also heraus, dass das obige ein Fehler im Framework ist, der gerade getestet und hoffentlich behoben und bald veröffentlicht wird. Ich habe das Problem vorübergehend gelöst, indem ich den URI serialisiert habe, bevor er die Serverseite erreicht.