Ini mungkin tampak bodoh, tapi saya mencoba untuk mendapatkan data kesalahan ketika permintaan gagal di Axios.
axios.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error) //Logs a string: Error: Request failed with status code 404
})
Alih-alih string, apakah mungkin untuk mendapatkan objek dengan kode status dan konten? Sebagai contoh:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
javascript
axios
Sebastian Olsen
sumber
sumber
response
properti?console.log
menggunakantoString
metode untuk memformatError
objek. Itu tidak ada hubungannya dengan merujuk keresponse
properti.console.log
menanganiError
objek sebagai kasus khusus. Saya tidak bisa mengatakan bagaimana tepatnya itu diterapkan di browser, tetapi jika Anda meneleponconsole.log({ foo: 'bar' });
danconsole.log(new Error('foo'));
di Chrome DevTools Console, Anda akan melihat bahwa hasilnya terlihat berbeda.Seperti yang dikatakan @Nick, hasil yang Anda lihat saat Anda objek
console.log
JavaScriptError
bergantung pada implementasi tepatconsole.log
, yang bervariasi dan (imo) membuat pengecekan kesalahan sangat mengganggu.Jika Anda ingin melihat
Error
objek lengkap dan semua informasi yang dibawanya melewatitoString()
metode ini, Anda bisa menggunakan JSON.stringify :sumber
Saya menggunakan pencegat ini untuk mendapatkan respons kesalahan.
sumber
Dengan TypeScript, mudah untuk menemukan apa yang Anda inginkan dengan tipe yang tepat.
sumber
Anda bisa menggunakan operator spread (
...
) untuk memaksanya ke objek baru seperti ini:Sadarilah: ini tidak akan menjadi contoh Kesalahan.
sumber
Ini adalah bug yang dikenal, coba gunakan
"axios": "0.13.1"
https://github.com/mzabriskie/axios/issues/378
Saya memiliki masalah yang sama sehingga akhirnya saya gunakan
"axios": "0.12.0"
. Ini bekerja dengan baik untuk saya.sumber
error
Ada opsi baru yang disebut
validateStatus
dalam permintaan konfigurasi. Anda dapat menggunakannya untuk menentukan untuk tidak membuang pengecualian jika status <100 atau status> 300 (perilaku default). Contoh:sumber
Anda bisa memasukkan kesalahan ke dalam objek dan mencatat objek, seperti ini:
Semoga ini bisa membantu seseorang di luar sana.
sumber
Untuk mendapatkan kembali kode status http dari server, Anda dapat menambahkan
validateStatus: status => true
opsi axios:Dengan cara ini, setiap respons http menyelesaikan janji yang dikembalikan dari aksioma.
https://github.com/axios/axios#handling-errors
sumber