مثال على استعلام:
mutation register {
register(
input: {
email: $email
avatar: $avatar
password: $password
}
) @rest(type: "Register", path: "auth/register", method: "POST")
}
يحتوي النموذج على إدخال ملف يرسل كائن ملف (هذه هي خاصية الصورة الرمزية). عند تسجيل متغير الصورة الرمزية ، يمكنني رؤية هذه الخاصية محددة ، ولكن عند إرسال البيانات باستخدام رابط أبولو ، يصبح كائن الملف فارغًا.
تسجيل المتغير قبل إرسال الطفرة:
عند إرسال البيانات إلى الخادم عبر أبولو ، يكون الكائن فارغًا:
لم أتمكن من العثور على أي إشارة إلى تحميل الملفات في المستندات ، لذلك لست متأكدًا مما إذا كان ذلك ممكنًا.
أعتقد أن هذا ممكن ، حيث كان علينا إصلاح بعض الأخطاء المتعلقة بتشويه كائنات الملف.
ومع ذلك ، لم أستخدم هذا مؤخرًا ، حيث أستخدم Apollo-link-rest على التفاعل الأصلي.
قد تضطر إلى قراءة مصدرنا لتصحيح هذا ومعرفة سبب عدم نجاحه! من الممكن أن يكون الإصلاح الحقيقي في Apollo-client وليس Apollo-link-rest!
شكرا على الرد! أردت بشكل أساسي التحقق من أنني لم أفقد شيئًا واضحًا ، مثل الإعداد الذي يحتاج إلى التمكين ، أو الرابط الذي يجب إضافته:
على سبيل المثال ، رأيت بعض الأشخاص يذكرون أن apollo-upload-client (https://github.com/jaydenseric/apollo-upload-client) مطلوب لتحميل الملفات في أبولو العادي.
لست متأكدًا مما إذا كان يجب إضافة رابط مشابه إلى العميل في Apollo-link-rest؟
لا ، هذا لا ينطبق هنا.
مؤخرًا في يوليو ، نشر شخص ما مثالاً على تحميل ملف رد الفعل باستخدام apollo-link-rest.
ربما هذا يساعد؟
https://github.com/apollographql/apollo-link-rest/issues/200#issuecomment -509287597
إذا اكتشفت ذلك ، فربما يتعين علينا كتابة قسم مستند حول كيفية القيام بذلك!
شكرا جزيلا لكfbartho!
ساعدت هذه المشكلة في حل المشكلة ، وكانت التغييرات الأساسية التي كان عليّ إجراؤها هي إضافة طريقة تشفير الملف إلى bodySerializers
bodySerializers: {
fileEncode: (data: any, headers: Headers) => {
const formData = new FormData()
formData.append('file', data, data.name)
headers.set('Accept', '*/*')
return { body: formData, headers }
}
}
وكذلك الجزء الذي تحدد فيه المسلسل على الاستعلام
@rest(
type: "File"
path: "YOUR_API_URL"
method: "POST"
bodySerializer: "fileEncode"
) {
سيكون من المفيد للغاية إذا كان شيء مثل هذا موجودًا في المستندات. شكرا لك مرة أخرى!