Apollo-link-rest: 404 OK 応答はエラーではなく null を返します

作成日 2019年07月15日  ·  6コメント  ·  ソース: apollographql/apollo-link-rest


最近、私は apollo-link-rest を使用して、アプリが使用していた (さまざまなエンドポイントへの) さまざまな呼び出しを同種にするプロジェクトに取り組んでいました。 一部のエンドポイントは GraphQL であり、その他のエンドポイントは残ります。

探していたリソースが存在しないため、エンドポイントの 1 つが失敗していたため、フェッチは 404 を返していました。 /master/src/restLink.ts#L1047).

応答から情報を隠すのが理にかなっているのはなぜですか? これは構成ベースで実行できますか?

help wanted 🛠 question❔

全てのコメント6件

多くの企業にとって、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

このページは役に立ちましたか?
0 / 5 - 0 評価