Apollo-link-rest: Est-il possible de soumettre des objets de fichier avec apollo-link-rest ?

Créé le 11 nov. 2019  ·  5Commentaires  ·  Source: apollographql/apollo-link-rest

Un exemple de requête :

  mutation register {
    register(
      input: {
        email: $email
        avatar: $avatar
        password: $password
      }
    ) @rest(type: "Register", path: "auth/register", method: "POST")
  }

Le formulaire a une entrée de fichier qui envoie un objet File (c'est la propriété avatar). Lors de l'enregistrement de la variable avatar, je peux voir que cette propriété est définie, mais lors de l'envoi des données avec apollo-link-rest, l'objet de fichier devient vide.

Journalisation de la variable avant l'envoi de la mutation :
image

Lors de l'envoi des données au serveur via apollo, l'objet est vide :

image

Je n'ai trouvé aucune mention de téléchargement de fichiers dans la documentation, donc je ne sais pas si c'est quelque chose qui est possible.

help wanted 🛠 question❔

Tous les 5 commentaires

Je pense que c'est possible, car nous avons dû corriger quelques bogues liés à la modification des objets File.

Cela dit, je ne l'ai pas utilisé récemment, car j'utilise Apollo-link-rest sur react-native.

Vous devrez peut-être lire notre source pour déboguer cela et comprendre pourquoi cela pourrait ne pas fonctionner ! Il est possible que le vrai correctif soit dans le client Apollo et non dans Apollo-link-rest !

Merci pour la réponse! Je voulais surtout vérifier qu'il ne me manquait pas quelque chose d'évident, comme un paramètre qui doit être activé, ou un lien qui doit être ajouté :slightly_smiliing_face:

Par exemple, j'ai vu certaines personnes mentionner qu'apollo-upload-client (https://github.com/jaydenseric/apollo-upload-client) est requis pour les téléchargements de fichiers dans apollo normal.

Je ne sais pas si un lien similaire doit être ajouté au client dans apollo-link-rest ?

Non, cela ne s'applique pas ici.

Pas plus tard qu'en juillet, quelqu'un a publié un exemple de téléchargement de fichier de réaction en utilisant apollo-link-rest.

Peut-être que cela aide?

https://github.com/apollographql/apollo-link-rest/issues/200#issuecomment -509287597

Si vous le comprenez, nous devrions peut-être écrire une section de documentation sur la façon de procéder !

Merci beaucoup @fbartho !

Ce problème a aidé à résoudre le problème, les principales modifications que j'ai dû apporter étaient l'ajout de la méthode d'encodage de fichier au bodySerializers

bodySerializers: {
    fileEncode: (data: any, headers: Headers) => {
      const formData = new FormData()
      formData.append('file', data, data.name)
      headers.set('Accept', '*/*')
      return { body: formData, headers }
    }
  }

Et aussi la partie où vous spécifiez le sérialiseur sur la requête

@rest(
        type: "File"
        path: "YOUR_API_URL"
        method: "POST"
        bodySerializer: "fileEncode"
      ) {

Ce serait super utile si quelque chose comme ça était dans la doc. Merci encore!

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