Apollo-link-rest: 404 OK Respons mengembalikan nol alih-alih kesalahan

Dibuat pada 15 Jul 2019  ·  6Komentar  ·  Sumber: apollographql/apollo-link-rest


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?

help wanted 🛠 question❔

Semua 6 komentar

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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat