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)

次のURLを生成します。

q%5B%5D = one&q%5B%5D = two&target = en

POSTの場合に[]を追加しようとしていると思います。 ただし、GETの場合は、q = one&q = twoである必要があります。

全てのコメント3件

これは意図された動作です。 README.mdによると、

コレクション型のエンコード方法に関する公開された仕様がないため、配列値のキーに[]を追加し(foo [] = 1&foo [] = 2)、ネストされたディクショナリ値の場合は角括弧で囲まれたキーを追加するという規則( foo [bar] = baz)[使用]。

GETを使用する代わりに、POSTまたはPUTを使用し、JSON、XML、または別の明確に定義された形式を介して値を渡すことを検討する必要があります。 これには明らかにサーバー側の変更が必要になる可能性があります。

サーバー側が制御できない場合は、代わりにこれらのパラメーターを手動でエンコードすることを検討する必要があります。

ええ、それはグーグルAPIエンドポイントなので、私のコントロールの外にあります。 グーグルAPIはそのフォーマットが好きではありません。 手動で作成することもできますが、ファイルするつもりだったので、皆さんはご存知でしょう。

@ JRG-開発者は正しいです—これは意図された動作です。 提供されているオプション以外のものが必要な場合は、カスタムパラメータエンコーディングを使用してください。

このページは役に立ちましたか?
0 / 5 - 0 評価