Apollo-link-rest: هل من الممكن إرسال كائنات الملفات باستخدام apollo-link-rest؟

تم إنشاؤها على ١١ نوفمبر ٢٠١٩  ·  5تعليقات  ·  مصدر: apollographql/apollo-link-rest

مثال على استعلام:

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

يحتوي النموذج على إدخال ملف يرسل كائن ملف (هذه هي خاصية الصورة الرمزية). عند تسجيل متغير الصورة الرمزية ، يمكنني رؤية هذه الخاصية محددة ، ولكن عند إرسال البيانات باستخدام رابط أبولو ، يصبح كائن الملف فارغًا.

تسجيل المتغير قبل إرسال الطفرة:
image

عند إرسال البيانات إلى الخادم عبر أبولو ، يكون الكائن فارغًا:

image

لم أتمكن من العثور على أي إشارة إلى تحميل الملفات في المستندات ، لذلك لست متأكدًا مما إذا كان ذلك ممكنًا.

help wanted 🛠 question❔

ال 5 كومينتر

أعتقد أن هذا ممكن ، حيث كان علينا إصلاح بعض الأخطاء المتعلقة بتشويه كائنات الملف.

ومع ذلك ، لم أستخدم هذا مؤخرًا ، حيث أستخدم 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"
      ) {

سيكون من المفيد للغاية إذا كان شيء مثل هذا موجودًا في المستندات. شكرا لك مرة أخرى!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات