Alamofire: Obtener parámetros de solicitud y matriz

Creado en 3 feb. 2015  ·  3Comentarios  ·  Fuente: Alamofire/Alamofire

No parece que las solicitudes GET estén traduciendo correctamente los parámetros de matriz.

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

genera la url:

q%5B%5D=uno&q%5B%5D=dos&objetivo=es

Creo que está tratando de agregar [] para el caso POST. Pero en el caso GET debería ser q=uno&q=dos

Todos 3 comentarios

Este es el comportamiento previsto. Según el archivo README.md,

Dado que no hay una especificación publicada sobre cómo codificar tipos de colección, la convención de agregar [] a la clave para valores de matriz (foo[]=1&foo[]=2) y agregar la clave entre corchetes para valores de diccionario anidados ( foo[bar]=baz) [se usa].

En lugar de usar GET, debería considerar usar POST o PUT y pasar valores a través de JSON, XML u otro formato bien definido. Obviamente, esto podría requerir cambios en el lado del servidor.

Si el lado del servidor está fuera de su control, debería considerar codificar manualmente estos parámetros.

Sí, es el punto final de la API de Google, por lo que está fuera de mi control. A la API de Google no le gusta ese formato. Puedo construirlo manualmente, aunque pensé en archivarlo para que ustedes lo sepan.

@JRG-Developer es correcto: este es el comportamiento previsto. Utilice la codificación de parámetros personalizados si necesita algo más que las opciones proporcionadas.

¿Fue útil esta página
0 / 5 - 0 calificaciones