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:
Saat mengirim data ke server melalui apollo objek kosong:
Saya tidak dapat menemukan penyebutan tentang mengunggah file di dokumen jadi saya tidak yakin apakah itu sesuatu yang mungkin.
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!