يبدو أنه لا يمكنك إجراء طلب PATCH أو POST بدون إدخال؟
الخطأ: Error: [GraphQL mutation using a REST call without a body]. No
input was detected. Pass bodyKey, or bodyBuilder to the @rest() directive to resolve this.
طفره:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
خيارات أبولو:
bodySerializers: {
text: (data, headers) => {
headers.set('Content-Type', 'text/plain');
return { body: data, headers };
}
}
أعتقد أنه يمكنك القيام بذلك:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug, input: null) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
في الواقع بالنسبة لي ، لم يعمل input: null
، لكن هذا نجح:
mutation extendTrial($orgSlug: String!) {
extendTrialResult(orgSlug: $orgSlug, input: {}) @rest(
type: "Org",
path: "/orgs/{args.orgSlug}/extend_trial/",
method: "PATCH",
bodySerializer: "text"
)
}
أليس هذا فظيعًا من الناحية الموضوعية؟ هل هناك طريقة للتغلب على هذا الآن؟ الوثائق تقول:
عند إجراء طلب POST أو PUT HTTP ، غالبًا ما تحتاج إلى تقديم نص طلب. حسب الاصطلاح ، توصي GraphQL بتسمية أنواع المدخلات الخاصة بك كمدخلات ، لذلك سنبحث افتراضيًا عن كائن JSON لجسمك.
ألا يبدو هذا وكأننا ندرك حقيقة أنك لا تحتاج دائمًا إلى جسد؟
أتحدث بصفتي كاتب هذا الخط الوثائقي ، نعم ، أنا على علم. لم يكن هذا مجرد أولوية عالية لحالات الاستخدام الخاصة بي.
@ d9001 إذا نظرت إلى حل @ Laruxo ، يمكنك أن ترى أن كل ما عليك فعله هو إضافة بضعة أحرف لتجاوز هذا القيد. إذا كنت تريد المساهمة في رمز لهذه الميزة ، فسيسعدني مساعدتك في مراجعتها.
نعم ، ليس الأمر أنني لم أتمكن من تشغيله. لقد دفعني ذلك للتو إلى معرفة سبب المشكلة ، والحل هو kinda meh كما ورد في طلبات السحب الخاصة بي حيث طلب مني الجميع إزالة الكائن غير المستخدم: |
سألقي نظرة على ما يتطلبه الأمر لإزالة هذا المطلب.
التعليق الأكثر فائدة
في الواقع بالنسبة لي ، لم يعمل
input: null
، لكن هذا نجح: