Apollo-link-rest: Apakah mungkin untuk mengirimkan objek file dengan apollo-link-rest?

Dibuat pada 11 Nov 2019  ·  5Komentar  ·  Sumber: apollographql/apollo-link-rest

Contoh kueri:

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

Formulir memiliki input file yang mengirimkan objek File (ini adalah properti avatar). Saat mencatat variabel avatar, saya dapat melihat properti ini didefinisikan, namun saat mengirim data dengan apollo-link-rest objek file menjadi kosong.

Mencatat variabel sebelum mengirim mutasi:
image

Saat mengirim data ke server melalui apollo objek kosong:

image

Saya tidak dapat menemukan penyebutan tentang mengunggah file di dokumen jadi saya tidak yakin apakah itu sesuatu yang mungkin.

help wanted 🛠 question❔

Semua 5 komentar

Saya percaya ini mungkin, karena kami harus memperbaiki beberapa bug yang terkait dengan mangling objek File.

Yang mengatakan, saya belum pernah menggunakan ini baru-baru ini, karena saya menggunakan Apollo-link-rest pada react-native.

Anda mungkin harus membaca sumber kami untuk men-debug ini dan mencari tahu mengapa itu tidak berhasil! Mungkin saja perbaikan sebenarnya ada di Apollo-client bukan Apollo-link-rest!

Terima kasih balasannya! Saya terutama ingin memeriksa bahwa saya tidak melewatkan sesuatu yang jelas, seperti pengaturan yang perlu diaktifkan, atau tautan yang perlu ditambahkan :slightly_smiling_face:

Misalnya saya telah melihat beberapa orang menyebutkan bahwa apollo-upload-client ( https://github.com/jaydenseric/apollo-upload-client ) diperlukan untuk unggahan file di apollo biasa.

Saya tidak yakin apakah tautan serupa perlu ditambahkan ke klien di apollo-link-rest?

Tidak, itu tidak berlaku di sini.

Baru-baru ini pada bulan Juli, seseorang memposting contoh unggahan File reaksi menggunakan apollo-link-rest.

Mungkin ini membantu?

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

Jika Anda mengetahuinya, mungkin kita harus menulis bagian dokumen tentang bagaimana melakukan ini!

Terima kasih banyak @fbartho!

Masalah itu membantu menyelesaikan masalah, perubahan utama yang harus saya lakukan adalah menambahkan metode penyandian file ke bodySerializers

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

Dan juga bagian di mana Anda menentukan serialiser pada kueri

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

Akan sangat membantu jika sesuatu seperti ini ada di dokumen. Terima kasih lagi!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat