Alamofire: Anforderungs- und Array-Parameter abrufen

Erstellt am 3. Feb. 2015  ·  3Kommentare  ·  Quelle: Alamofire/Alamofire

Es scheint nicht so, als würden GET-Anforderungen Array-Parameter korrekt übersetzen.

    let params: [String: AnyObject] = ["q": ["one", "two"], "target": "en"]
    Alamofire.request(.GET, "https://www.googleapis.com/language/translate/v2", parameters: params)

generiert die URL:

q%5B%5D=eins&q%5B%5D=zwei&target=en

Ich denke, es versucht, [] für den POST-Fall hinzuzufügen. Aber im GET-Fall sollte es q=one&q=two sein

Alle 3 Kommentare

Dies ist beabsichtigtes Verhalten. Laut README.md,

Da es keine veröffentlichte Spezifikation zum Codieren von Sammlungstypen gibt, ist die Konvention, [] an den Schlüssel für Array-Werte (foo[]=1&foo[]=2) anzuhängen und den Schlüssel in eckige Klammern für verschachtelte Wörterbuchwerte einzufügen ( foo[bar]=baz) [wird verwendet].

Anstatt GET zu verwenden, sollten Sie POST oder PUT verwenden und Werte über JSON, XML oder ein anderes klar definiertes Format übergeben. Dies könnte offensichtlich serverseitige Änderungen erfordern.

Wenn die Serverseite außerhalb Ihrer Kontrolle liegt, sollten Sie diese Parameter stattdessen manuell codieren.

Ja, es ist der Google-API-Endpunkt, also liegt es außerhalb meiner Kontrolle. Die Google-API mag dieses Format nicht. Ich kann es manuell konstruieren, dachte aber, ich würde es einreichen, damit ihr es wisst.

@JRG-Developer ist richtig – das ist beabsichtigtes Verhalten. Verwenden Sie die benutzerdefinierte Parametercodierung, wenn Sie andere als die bereitgestellten Optionen benötigen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen