Baru-baru ini saya bekerja di sebuah proyek menggunakan apollo-link-rest untuk membuat panggilan yang berbeda (ke titik akhir yang berbeda) menjadi homogen yang digunakan aplikasi. Beberapa titik akhir adalah GraphQL beberapa lainnya istirahat.
Salah satu titik akhir saya gagal karena sumber daya yang saya cari tidak ada dan oleh karena itu pengambilan mengembalikan 404. Tetapi sejak #119 & #142 (https://github.com/apollographql/apollo-link-rest/blob /master/src/restLink.ts#L1047).
Mengapa masuk akal untuk menyembunyikan informasi dari respons? Bisakah ini dilakukan dalam konfigurasi berbasis?
Bagi banyak perusahaan, 404 adalah "kesalahan non-fatal" -- itu hanya berarti ada sesuatu yang tidak ada. Sering kali tidak ada data "ekstra" dalam respons 404, jadi mengembalikan null sepertinya model yang paling sesuai dengan GraphQL. Berdasarkan diskusi di #119 dan di luar, sepertinya ada konsensus bahwa ini adalah default ke hasil yang lebih menyakitkan, jadi perubahan dilakukan.
Jika Anda masih ingin menyebabkan ini gagal, Anda dapat menulis pembungkus customFetch
Anda sendiri yang akan memunculkan Kesalahan saat 404 terjadi.
Terima kasih @fbartho saya pikir itu masuk akal. Saya pikir masalah dalam kasus kami adalah bahwa skema keluar terlihat sangat REST-y sehingga membuatnya sulit untuk bekerja tanpa 404. Saya akan melanjutkan dan menerapkan customFetch saya sendiri. Terima kasih!
Saya tidak berpikir kesalahan 404
harus diperlakukan secara berbeda, itu masih merupakan kesalahan klien.
@kevinrobayna apakah Anda dapat menangani kesalahan 404? Saya memiliki persyaratan serupa. Saya perlu menangani kesalahan 404. Saat ini, klien apollo mengembalikan data nol. sementara saya melihatnya 404 di inspektur jaringan.
@anasnain saya harus menanganinya di acara onCompleted
:
onCompleted: (data) => {
const token = data?.passwordRecoveryToken;
// Apollo client sends null on 404 errors: https://github.com/apollographql/apollo-link-rest/issues/119
if (!token) return handleEmailNotFound();
return onGoToVerifyCode({ tokenId: token.id, email: inputs?.email?.value });
},
Saya telah memasang PR untuk memulihkan 404 sebagai kesalahan jaringan normal, bertepatan dengan praktik REST API yang baik: https://github.com/apollographql/apollo-link-rest/pull/283