Alamofire: Получить параметры запроса и массива

Созданный на 3 февр. 2015  ·  3Комментарии  ·  Источник: Alamofire/Alamofire

Не похоже, что запросы GET правильно переводят параметры массива.

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

генерирует URL:

q%5B%5D=один&q%5B%5D=два&цель=en

Я думаю, что он пытается добавить [] для случая POST. Но в случае GET должно быть q=one&q=two.

Все 3 Комментарий

Это предполагаемое поведение. Согласно README.md,

Поскольку нет опубликованной спецификации того, как кодировать типы коллекций, соглашение о добавлении [] к ключу для значений массива (foo[]=1&foo[]=2) и добавление ключа, заключенного в квадратные скобки, для вложенных значений словаря ( foo[bar]=baz) [используется].

Вместо использования GET вам следует рассмотреть возможность использования POST или PUT и передачи значений через JSON, XML или другой четко определенный формат. Очевидно, это может потребовать изменений на стороне сервера.

Если серверная часть находится вне вашего контроля, вам следует рассмотреть возможность ручного кодирования этих параметров.

Да, это конечная точка Google API, поэтому я не могу это контролировать. Google API не любит этот формат. Я могу создать его вручную, но подумал, что запишу его, чтобы вы, ребята, знали.

@ JRG-Developer прав - это предполагаемое поведение. Используйте пользовательскую кодировку параметров, если вам нужно что-то кроме предоставленных параметров.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги