2016-05-17 12 views
3

Gibt es eine Möglichkeit, eine GET-Anfrage in Siesta zu machen, während Parameter, wie http://example.com/api/list.json?myparam=1?Siesta iOS GET Anfrage mit URL-Parametern

Ich habe versucht, mit

myAPI.resource("list.json?myparam=1") 

aber die Fragezeichen entkommen wird.

Dann habe ich versucht, mit

myAPI.resource("list.json").request(.GET, urlEncoded:["myparam": "1"]) 

aber es funktioniert nicht immer mit „Die Netzwerkverbindung verloren.“, Aber alle anderen Anfragen erfolgreich zu sein, so dass die Nachricht ist falsch.

Antwort

10

Sie suchen withParam:

myAPI.resource("list.json").withParam("myparam", "1") 

Die Service.resource(_:) Methode Sie versuchen, die speziell in Ihrem ersten Beispiel verwenden, vermeidet Sonderzeichen als params Interpretation (oder irgendetwas außer einem Pfad). Aus der Dokumentation:

Der Pfadparameter wird einfach an den Pfad von baseURL angehängt und wird nie als URL interpretiert. Zeichenfolgen wie .., //,? Und https: haben keine spezielle Bedeutung; Sie gehen direkt in den Pfad der resultierenden Ressource und können bei Bedarf austreten.

Dies ist eine Sicherheitsfunktion, die verhindern soll, dass von Benutzern gesendete Strings in andere Teile der URL gelangen.

Die Methode Resource.request(_:urlEncoded:) in Ihrem zweiten Beispiel dient zum Übergeben von Parametern in einem Anforderungshauptteil (d. H. Mit einem POST oder PUT), nicht für Parameter in der Abfragezeichenfolge.

Beachten Sie, dass Sie immer Service.resource(absoluteURL:) verwenden können, um eine URL selbst zu erstellen, wenn Sie die URL-Komponentenisolation und die Escape-Funktionen von Siesta umgehen möchten.