<p>axios tidak boleh memberikan tanggapan HTTP yang valid</p>

Dibuat pada 9 Okt 2016  ·  3Komentar  ·  Sumber: axios/axios

Mengapa axios melempar status < 200 || status >= 300 ? lihat defaults.js#L84
Kesalahan HTTP 500 berarti kami mencapai server dan bahkan mendapat respons yang valid menggunakan protokol http.

Dari sudut pandang aplikasi, kesalahan HTTP 500 mungkin dianggap sebagai pengecualian, tetapi ini berada pada tingkat abstraksi yang berbeda dan sama sekali tidak terkait dengan abstraksi HTTP.

Agar kompatibel dengan spesifikasi pengambilan yang akan datang, saya pikir aksio penting tidak akan terjadi jika ada respons HTTP yang valid.

Spesifikasi pengambilan menentukan properti response.ok , sehingga pengembang aplikasi dapat dengan mudah mengidentifikasi hasil dari operasi HTTP, saya yakin pendekatan serupa dapat berguna untuk axios.

Silakan lihat di sini untuk detail lebih lanjut tentang spesifikasi pengambilan:
https://fetch.spec.whatwg.org/#dom -response-ok
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Komentar yang paling membantu

Benar, tetapi poin saya adalah ini seharusnya tidak menjadi default. Bahkan ini seharusnya tidak dapat dikonfigurasi.

Semua 3 komentar

Saya pikir Anda dapat menggunakan opsi konfigurasi validateStatus untuk selalu menyelesaikan ketika ada respons server. dari dokumen:

// `validateStatus` defines whether to resolve or reject the promise for a given
// HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
// or `undefined`), the promise will be resolved; otherwise, the promise will be
// rejected.
validateStatus: function (status) {
  return status >= 200 && status < 300; // default
}

Benar, tetapi poin saya adalah ini seharusnya tidak menjadi default. Bahkan ini seharusnya tidak dapat dikonfigurasi.

Kami memahami kekhawatiran Anda, tetapi Axios tidak bermaksud mengganti fetch atau meniru perilakunya. Kami bahkan tidak menggunakannya sebagai adaptor untuk melakukan panggilan (kami tetap menggunakan XHR untuk saat ini).

Axios berusaha sedapat mungkin dikonfigurasi dengan menyediakan default yang akan digunakan kebanyakan orang. Dalam hal ini orang cenderung memverifikasi kode status tepat setelah ada tanggapan dari server. Misalnya:

fetch(url).then(verifyStatus).then(...);

Itu sebabnya paket seperti fetch-check-http-status ada.

Kami ingin menghindari struktur yang berulang begitu sering. Jika Anda ingin menyelesaikan dengan respons valid apa pun dari server, Anda selalu dapat mengatur validateStatus: false .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

emaincourt picture emaincourt  ·  3Komentar

Spartano picture Spartano  ·  3Komentar

achingbrain picture achingbrain  ·  3Komentar

c0debreaker picture c0debreaker  ·  3Komentar

Adman picture Adman  ·  3Komentar