Apollo-link-rest: Ist es möglich, Dateiobjekte mit apollo-link-rest einzureichen?

Erstellt am 11. Nov. 2019  ·  5Kommentare  ·  Quelle: apollographql/apollo-link-rest

Eine Beispielabfrage:

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

Das Formular hat eine Dateieingabe, die ein File-Objekt sendet (dies ist die Avatar-Eigenschaft). Beim Loggen der Avatar-Variable sehe ich, dass diese Eigenschaft definiert ist, aber beim Senden der Daten mit apollo-link-rest wird das Dateiobjekt leer.

Protokollieren der Variablen vor dem Senden der Mutation:
image

Beim Senden der Daten an den Server über apollo ist das Objekt leer:

image

Ich konnte in den Dokumenten keinen Hinweis auf das Hochladen von Dateien finden, daher bin ich mir nicht sicher, ob dies möglich ist.

help wanted 🛠 question❔

Alle 5 Kommentare

Ich glaube, dies ist möglich, da wir einige Fehler im Zusammenhang mit der Manipulation von Dateiobjekten beheben mussten.

Das heißt, ich habe dies in letzter Zeit nicht verwendet, da ich Apollo-Link-Rest auf Reaktiv-Native verwende.

Möglicherweise müssen Sie unsere Quelle durchlesen, um dies zu debuggen und herauszufinden, warum es möglicherweise nicht funktioniert! Es ist möglich, dass der eigentliche Fix im Apollo-Client liegt und nicht im Apollo-Link-Rest!

Danke für die Antwort! Ich wollte hauptsächlich überprüfen, ob ich etwas Offensichtliches verpasst habe, wie eine Einstellung, die aktiviert werden muss, oder ein Link, der hinzugefügt werden muss :slightly_smiling_face:

Ich habe zum Beispiel gesehen, wie einige Leute erwähnt haben, dass apollo-upload-client (https://github.com/jaydenseric/apollo-upload-client) für Datei-Uploads in regulärem apollo erforderlich ist.

Ich bin mir nicht sicher, ob dem Client in apollo-link-rest ein ähnlicher Link hinzugefügt werden muss?

Nein, das gilt hier nicht.

Erst im Juli hat jemand ein Beispiel für das Hochladen von Reaktionsdateien mit apollo-link-rest gepostet.

Vielleicht hilft das?

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

Wenn Sie es herausbekommen, sollten wir vielleicht einen Dokumentationsabschnitt darüber schreiben, wie das geht!

Vielen Dank @fbartho!

Dieses Problem half, das Problem zu lösen. Die wichtigsten Änderungen, die ich vornehmen musste, waren das Hinzufügen der Dateicodierungsmethode zu bodySerializers

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

Und auch der Teil, in dem Sie den Serialisierer in der Abfrage angeben

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

Es wäre super hilfreich, wenn so etwas in der Dokumentation stehen würde. Danke noch einmal!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen