Apollo-link-rest: 404 OK Antwort gibt null anstelle eines Fehlers zurück

Erstellt am 15. Juli 2019  ·  6Kommentare  ·  Quelle: apollographql/apollo-link-rest


Vor kurzem arbeitete ich in einem Projekt mit apollo-link-rest, um die verschiedenen Aufrufe (an verschiedene Endpunkte) zu homogenisieren, die die App verwendet. Einige Endpunkte sind GraphQL, andere ruhen.

Einer meiner Endpunkte schlug fehl, da die gesuchte Ressource nicht existierte und der Abruf daher einen 404 zurückgab. Aber seit # 119 & # 142 (https://github.com/apollographql/apollo-link-rest/blob .) /master/src/restLink.ts#L1047).

Warum wäre es sinnvoll, Informationen aus der Antwort zu verbergen? Könnte dies in einer Konfiguration basierend erfolgen?

help wanted 🛠 question❔

Alle 6 Kommentare

Für viele Unternehmen ist ein 404 ein "nicht schwerwiegender Fehler" - es bedeutet nur, dass etwas fehlt. Die 404-Antwort enthält oft keine "zusätzlichen" Daten, daher schien die Rückgabe von null das Modell zu sein, das am besten zu GraphQL passt. Basierend auf Diskussionen in Nr. 119 und außerhalb schien es, als gäbe es einen Konsens darüber, dass dies zu einem schmerzhafteren Ergebnis führte, also wurde die Änderung vorgenommen.

Wenn dies dennoch fehlschlagen soll, können Sie Ihren eigenen customFetch Wrapper schreiben, der einen Fehler auslöst, wenn 404 auftritt.

Danke @fbartho ich denke das macht Sinn. Ich denke, das Problem in unserem Fall ist, dass unser Schema sehr REST-y aussieht, was es schwierig macht, ohne 404 zu arbeiten. Ich werde meinen eigenen customFetch implementieren. Vielen Dank!

Ich denke nicht, dass 404 Fehler anders behandelt werden sollten, sie sind immer noch ein Client-Fehler.

@kevinrobayna konnten Sie den 404-Fehler behandeln? Ich habe eine ähnliche Anforderung. Ich muss einen 404-Fehler behandeln. Derzeit gibt der apollo-Client Nulldaten zurück. während ich sehe, dass es 404 im Netzwerkinspektor ist.

@anasnain Ich musste es im onCompleted Event handhaben:

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 });
},

Ich habe einen PR erstellt, um 404 als normale Netzwerkfehler wiederherzustellen, um mit guten REST-API-Praktiken zusammenzufallen: https://github.com/apollographql/apollo-link-rest/pull/283

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen