Alamofire: Permintaan Fitur - Tandai untuk meminta respons.data dikonversi meskipun validasi gagal.

Dibuat pada 5 Sep 2016  ·  3Komentar  ·  Sumber: Alamofire/Alamofire

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.

feature request response validation

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 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. 🍻

Semua 3 komentar

👍

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?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat