Apollo-link-rest: Impossible de combiner reste avec graphql dans la mĂȘme requĂȘte

CrĂ©Ă© le 4 avr. 2018  Â·  9Commentaires  Â·  Source: apollographql/apollo-link-rest

Résumé

J'essaye de mĂ©langer une demande de repos avec une demande de graphql. Les deux demandes font rĂ©fĂ©rence Ă  la mĂȘme ressource et fonctionnent lorsqu'elles sont exĂ©cutĂ©es individuellement. Cependant, lorsque vous essayez d'exĂ©cuter les deux ensemble

const QUERY_AUTHORS_AND_PEOPLE = gql`
    query {
        people @rest(type: "[Person]", path: "authors/") {
            firstName
        }

        authors {
            id
            firstName
        }
    }

J'obtiens l'erreur suivante

image

Vous pouvez trouver l'exemple auquel je fais référence ici

blocking bug 🐛 has-reproduction help wanted 🛠

Commentaire le plus utile

En fait, je viens de vĂ©rifier et cela fait dĂ©jĂ  partie d'apollo-utilities. @fbartho Je serais prĂȘt Ă  accepter cela si personne d'autre n'y travaille dĂ©jĂ . Cela semble ĂȘtre une solution relativement simple. Il faudra cependant imaginer diffĂ©rents scĂ©narios de test ...

Tous les 9 commentaires

Hey @ chimon2000 - cela ressemble Ă  un gros bug, vous sentez-vous Ă  l'aise de nous soumettre un test unitaire qui pourrait reproduire cela?

Alternativement, un PR qui corrige cela serait encore mieux. Je suis heureux de vous aider, mais mon environnement de test principal actuel n'utilise pas de vrai serveur GraphQL, donc je ne suis pas tout à fait configuré pour vérifier que cela fonctionne.

Salut @fbartho , merci pour la réponse rapide. J'ai ajouté mon exemple de dépÎt qui contient le code nécessaire pour reproduire le problÚme avec des exemples angular et (p) react, mais je peux également voir l'ajout d'un test unitaire pour cela.

Je ne suis pas particuliÚrement doué pour le fonctionnement des liens Apollo.

Hé @fbartho , j'ai ajouté un test d'échec des relations publiques pour que vous puissiez fouiller - c'est en effet un problÚme, j'espÚre que c'est utile.

En regardant dans la source, il semble que la seule fois oĂč forward est appelĂ© pour envoyer l'opĂ©ration au lien suivant est here .

Je pense que si nous voulons prendre en charge le comportement de fusion, nous devons inspecter la requĂȘte, supprimer les Ă©lĂ©ments non restants et les transmettre au lien suivant.

Je pense qu'en gros, copier cette section depuis apollo-link-state serait suffisant (il pourrait mĂȘme ĂȘtre judicieux de se coordonner avec les responsables pour extraire ce type de logique dans un package sĂ©parĂ© car cela semble vraiment utile pour les constructeurs de liens).

En fait, je viens de vĂ©rifier et cela fait dĂ©jĂ  partie d'apollo-utilities. @fbartho Je serais prĂȘt Ă  accepter cela si personne d'autre n'y travaille dĂ©jĂ . Cela semble ĂȘtre une solution relativement simple. Il faudra cependant imaginer diffĂ©rents scĂ©narios de test ...

@paulpdaniels Mec,

Scénarios dangereux spécifiques Je veux m'assurer que nous soutenons / ne cassons pas:

  • Imbrication de @rest() dans des requĂȘtes @rest() avec `@export (as:
) en cours d'utilisation
  • Imbrication de @rest() dans des requĂȘtes server-graphql avec `@export (as:
) en cours d'utilisation
  • Imbrication @rest() dans les requĂȘtes @client
  • S'assurer que cela ne casse pas les chemins de code de Typename Patcher!

La directive d'exportation ne semble pas fonctionner dans les requĂȘtes serveur-graphql. J'obtiens l'erreur suivante: Directive inconnue "export".

@marcelombc cela dĂ©pendrait de l'implĂ©mentation de votre serveur, je suppose, apollo-server est livrĂ© avec lui, mais je ne pense pas qu'il soit nĂ©cessaire d'ĂȘtre conforme aux spĂ©cifications.

@paulpdaniels Vous avez raison. J'utilise du graphÚne sur le serveur et j'avais juste besoin de créer une directive personnalisée pour prendre en charge @export. Merci de votre aide.

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