API yang saya gunakan terkadang akan mengirimkan kembali pesan kesalahan sebagai JSON dengan informasi tambahan tentang mengapa permintaan gagal.
Saat ini saya harus menerapkan mengubah NSData di response.data menjadi JSONDictionary ketika validasi gagal.
Akan lebih mudah bagi saya untuk meminta Alamofire menangani ini.
Saya ingin cara untuk menandai permintaan individu dan/atau global untuk memaksa Alamofire mencoba mengonversi response.data menggunakan tipe serializer yang sama seperti yang akan saya gunakan pada data respons bahkan jika metode validasi gagal?
Saya percaya pada Alamofire versi 1.0 atau 2.0 Anda masih bisa mendapatkan objek yang dikonversi dari result.value bahkan jika validasi gagal. Akan menyenangkan untuk memiliki kemampuan itu lagi, jadi saya tidak menerapkan logika yang sama yang sudah ada di ResponseSerializers Alamofire.
Terima kasih atas waktu Anda dan saya harap Anda mempertimbangkan permintaan ini.
👍
Terima kasih atas permintaan fiturnya @tobiasoleary!
Sementara saya mengerti dari mana Anda berasal, saya rasa kami tidak ingin mencoba menangani kasus itu. Jika validasi gagal, maka validasilah yang seharusnya menghasilkan kesalahan yang menyebabkan serializer respons Anda tidak dijalankan karena kesalahan telah terjadi. Artinya, jika Anda menemukan kesalahan validasi, Anda harus mengekstrak pesan kesalahan dari data server secara langsung di penutupan validasi. Ini saat ini tidak dimungkinkan di Alamofire 3 kecuali jika Anda menulis ekstensi pada Request
.
Di Alamofire 4, kami telah mempermudah penguraian kesalahan dari data server jika perlu dengan menambahkan data
atau temporaryURL
dan destinationURL
ke masing-masing DataRequest
atau DownloadRequest
validasi penutupan. Rincian lebih lanjut dapat ditemukan di panduan migrasi . Apa yang pada akhirnya memungkinkan Anda lakukan adalah:
Alamofire.request(urlString)
.validate { request, response, data in
guard let data = data else { return .failure(customError) }
// 1) Validate the response to make sure everything looks good
// 2) If validation fails, you can now parse the error message out of the
// data if necessary and add that to your custom error if you wish.
return .success
}
.response { response in
debugPrint(response)
}
Jika Anda berbagi serializer respons yang sama persis untuk mengurai pesan kesalahan seperti yang Anda gunakan di penangan respons, maka Anda bisa menggunakan kembali serializer dalam kasus kegagalan validasi. Dalam banyak kasus meskipun payload untuk kegagalan akan berbeda dari keberhasilan sehingga Anda harus menggunakan logika parsing yang berbeda.
Semoga itu membantu memperjelas berbagai hal dan mengarahkan Anda ke arah yang benar.
Bersulang. 🍻
@gchaturvedi apakah Anda punya contoh cara mendapatkan kesalahan dari server, apakah saya harus deserialize data?
Komentar yang paling membantu
Terima kasih atas permintaan fiturnya @tobiasoleary!
Sementara saya mengerti dari mana Anda berasal, saya rasa kami tidak ingin mencoba menangani kasus itu. Jika validasi gagal, maka validasilah yang seharusnya menghasilkan kesalahan yang menyebabkan serializer respons Anda tidak dijalankan karena kesalahan telah terjadi. Artinya, jika Anda menemukan kesalahan validasi, Anda harus mengekstrak pesan kesalahan dari data server secara langsung di penutupan validasi. Ini saat ini tidak dimungkinkan di Alamofire 3 kecuali jika Anda menulis ekstensi pada
Request
.Di Alamofire 4, kami telah mempermudah penguraian kesalahan dari data server jika perlu dengan menambahkan
data
atautemporaryURL
dandestinationURL
ke masing-masingDataRequest
atauDownloadRequest
validasi penutupan. Rincian lebih lanjut dapat ditemukan di panduan migrasi . Apa yang pada akhirnya memungkinkan Anda lakukan adalah:Jika Anda berbagi serializer respons yang sama persis untuk mengurai pesan kesalahan seperti yang Anda gunakan di penangan respons, maka Anda bisa menggunakan kembali serializer dalam kasus kegagalan validasi. Dalam banyak kasus meskipun payload untuk kegagalan akan berbeda dari keberhasilan sehingga Anda harus menggunakan logika parsing yang berbeda.
Semoga itu membantu memperjelas berbagai hal dan mengarahkan Anda ke arah yang benar.
Bersulang. 🍻