أعمل على سكريبت بلغة بايثون يستخدم واجهة برمجة تطبيقات Discourse لتعيين حالة المنشور إلى ‘pinned-globally’، تماشياً مع توثيق الواجهة.
يفشل الطلب الخاص بـ ‘pinned-globally’ مع رمز استجابة 400، بينما يعمل الطلب الذي يحتوي على معلمة الحالة المحددة إلى ‘pinned’ بشكل مثالي (أي يمكنني رؤية المنشور مثبتاً محلياً).
إليك جزء من الكود الخاص بي:
apiWebsite = '<my_website_URL>'
apiKey = '<secret>'
apiUsername = '<secret>'
headers = {
'Api-Key': apiKey,
'Api-Username': apiUsername
}
# هذا الطلب يعمل بشكل صحيح
# تثبيت نفس المنشور محلياً
payload = {
'status': 'pinned',
'enabled': 'true',
'until': '2019-11-25T08:00:00'
}
u = requests.put(apiWebsite + '/t/29082/status', headers=headers, data=payload)
print(u.status_code)
بعد إعادة تعيين حالة التثبيت إلى false، أحاول تثبيته عالمياً بالطريقة التالية.
# هذا الطلب لا يعمل
# تثبيت نفس الموضوع عالمياً
payload = {
'status': 'pinned-globally',
'enabled': 'true',
'until': '2019-11-25T08:00:00'
}
u = requests.put(apiWebsite + '/t/29082/status', headers=headers, data=payload)
print(u.status_code)
هل أغفلت شيئاً واضحاً أم أن الأمر يتعلق بخلل حقيقي؟
أهلاً، جيد . بعد النظر في الكود، أرى هذا السبب الذي سيؤدي إلى خطأ 400
أعتقد أنك تحتاج إلى pinned_globally بدلاً من pinned-globally. هل يمكنك تجربتها ورؤية ما إذا كانت تعمل؟ يبدو أن هناك خطأ مطبعي في وثائق واجهة برمجة التطبيقات الخاصة بنا - سأقوم بإصلاحه.