Alamofire: Dapatkan permintaan dan larik params

Dibuat pada 3 Feb 2015  ·  3Komentar  ·  Sumber: Alamofire/Alamofire

Sepertinya permintaan GET tidak menerjemahkan params array dengan benar.

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

menghasilkan url:

q%5B%5D=satu&q%5B%5D=dua&target=id

Saya pikir itu mencoba menambahkan [] untuk kasus POST. Tetapi dalam kasus GET seharusnya q=one&q=two

Semua 3 komentar

Ini adalah perilaku yang dimaksudkan. Menurut README.md,

Karena tidak ada spesifikasi yang dipublikasikan tentang cara menyandikan tipe koleksi, konvensi menambahkan [] ke kunci untuk nilai larik (foo[]=1&foo[]=2), dan menambahkan kunci yang dikelilingi oleh tanda kurung siku untuk nilai kamus bersarang ( foo[bar]=baz) [digunakan].

Alih-alih menggunakan GET, Anda harus mempertimbangkan untuk menggunakan POST atau PUT dan meneruskan nilai melalui JSON, XML, atau format lain yang terdefinisi dengan baik. Ini jelas membutuhkan perubahan sisi server.

Jika sisi server di luar kendali Anda, Anda harus mempertimbangkan untuk mengkodekan parameter ini secara manual.

Ya itu titik akhir google api, jadi itu di luar kendali saya. Google API tidak menyukai format itu. Saya dapat membuatnya secara manual, saya pikir saya akan mengajukannya agar kalian sadar.

@JRG-Developer benar—ini adalah perilaku yang dimaksudkan. Gunakan pengkodean parameter khusus jika Anda memerlukan apa pun selain opsi yang disediakan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat