Apollo-link-rest: 404 OK La réponse renvoie null au lieu d'une erreur

Créé le 15 juil. 2019  ·  6Commentaires  ·  Source: apollographql/apollo-link-rest


Récemment, je travaillais dans un projet utilisant apollo-link-rest pour rendre homogènes les différents appels (vers différents points de terminaison) que l'application utilisait. Certains points de terminaison sont GraphQL, d'autres restent.

L'un de mes points de terminaison échouait car la ressource que je cherchais n'existait pas et, par conséquent, la récupération renvoyait un 404. Mais depuis #119 & #142 (https://github.com/apollographql/apollo-link-rest/blob /master/src/restLink.ts#L1047).

Pourquoi serait-il logique de masquer les informations de la réponse ? Cela pourrait-il être fait dans une configuration basée?

help wanted 🛠 question❔

Tous les 6 commentaires

Pour de nombreuses entreprises, un 404 est une "erreur non fatale" - cela signifie simplement que quelque chose est absent. Il n'y a souvent pas de données "supplémentaires" dans la réponse 404, donc le retour de null semblait être le modèle qui correspondait le mieux à GraphQL. Sur la base des discussions au n°119 et à l'extérieur, il semblait qu'il y avait un consensus sur le fait que cela aboutissait par défaut à un résultat plus douloureux, donc le changement a été effectué.

Si vous voulez toujours que cela échoue, vous pouvez écrire votre propre wrapper customFetch qui lancera une erreur lorsque 404 se produira.

Merci @fbartho, je pense que cela a du sens. Je pense que le problème dans notre cas est que notre schéma a l'air très REST, ce qui rend difficile le travail sans le 404. Je vais aller de l'avant et implémenter mon propre customFetch. Merci!

Je ne pense pas que les erreurs 404 doivent être traitées différemment, elles restent une erreur client.

@kevinrobayna avez-vous pu gérer l'erreur 404 ? J'ai une exigence similaire. Je dois gérer une erreur 404. Actuellement, le client apollo renvoie des données nulles. alors que je vois que c'est 404 dans l'inspecteur de réseau.

@anasnain, j'ai dû le gérer dans l'événement 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 });
},

J'ai mis en place un PR pour rétablir les 404 en tant qu'erreurs de réseau normales, pour coïncider avec les bonnes pratiques de l'API REST : https://github.com/apollographql/apollo-link-rest/pull/283

Cette page vous a été utile?
0 / 5 - 0 notes