最近、私は apollo-link-rest を使用して、アプリが使用していた (さまざまなエンドポイントへの) さまざまな呼び出しを同種にするプロジェクトに取り組んでいました。 一部のエンドポイントは GraphQL であり、その他のエンドポイントは残ります。
探していたリソースが存在しないため、エンドポイントの 1 つが失敗していたため、フェッチは 404 を返していました。 /master/src/restLink.ts#L1047).
応答から情報を隠すのが理にかなっているのはなぜですか? これは構成ベースで実行できますか?
多くの企業にとって、404 は「致命的ではないエラー」であり、何かが欠けていることを意味します。 多くの場合、404 レスポンスには「余分な」データがないため、null を返すことが GraphQL に最適なモデルのように見えました。 #119 および外部での議論に基づいて、これはデフォルトでより苦痛な結果になるというコンセンサスがあったように思われたため、変更が行われました。
それでもこれを失敗させたい場合は、404 が発生したときにエラーをスローする独自のcustomFetch
ラッパーを作成できます。
@fbarthoありがとうございます それは理に
404
エラーを別の方法で扱う必要はないと思います。それらは依然としてクライアント エラーです。
@kevinrobayna 404 エラーを処理できましたか? 同様の要件があります。 404 エラーを処理する必要があります。 現在、apollo クライアントは null データを返しています。 ネットワーク インスペクターでは 404 であることがわかります。
@anasnain onCompleted
イベントでそれを処理しなければなりません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 });
},
REST API の適切な慣行に合わせて、404 を通常のネットワーク エラーとして復活させるための PR を作成しました: https://github.com/apollographql/apollo-link-rest/pull/283