Alamofire: 获取请求和数组参数

创建于 2015-02-03  ·  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)

生成网址:

q%5B%5D=一个&q%5B%5D=两个&目标=en

我认为它正在尝试为 POST 案例添加 []。 但在 GET 情况下,它应该是 q=one&q=two

所有3条评论

这是预期的行为。 根据 README.md,

由于没有发布关于如何编码集合类型的规范,因此将 [] 附加到数组值的键的约定(foo[]=1&foo[]=2),并在嵌套字典值的方括号中附加键( foo[bar]=baz) [已使用]。

您应该考虑使用 POST 或 PUT 并通过 JSON、XML 或其他明确定义的格式传递值,而不是使用 GET。 这显然需要服务器端的更改。

如果服务器端不受您的控制,您应该考虑手动编码这些参数。

是的,它是 google api 端点,所以它不在我的控制范围内。 google API 不喜欢这种格式。 我可以手动构建它,但我想我会归档它,所以你们都知道。

@JRG-Developer 是正确的——这是预期的行为。 如果您需要提供的选项以外的任何内容,请使用自定义参数编码。

此页面是否有帮助?
0 / 5 - 0 等级