مرحباً بمجتمع Discourse،
أواجه حاليًا تحديات مع نقاط نهاية واجهة برمجة تطبيقات Discourse، وتحديدًا فيما يتعلق بتعليق المستخدمين، وسأقدر بشدة أي مساعدة أو توجيه يمكنك تقديمه.
ملخص المشكلات
-
404 لم يتم العثور عليه:
- عند استخدام نقطة النهاية:
/admin/users/15/suspend.json، أتلقى باستمرار خطأ “الصفحة غير موجودة”، على الرغم من وجود المستخدم. - لقد جربت أيضًا نقطة النهاية البديلة:
/admin/u/15/suspend.json، والتي تؤدي إلى نفس المشكلة.
- عند استخدام نقطة النهاية:
-
استجابة HTML غير متوقعة:
- بدلاً من إرجاع استجابة JSON المتوقعة، تُرجع واجهة برمجة التطبيقات صفحة HTML بالرسالة:
“عذرًا! هذه الصفحة غير موجودة أو خاصة.” - يحدث هذا بغض النظر عما إذا كنت أستخدم
curlأو PowerShell للطلب.
- بدلاً من إرجاع استجابة JSON المتوقعة، تُرجع واجهة برمجة التطبيقات صفحة HTML بالرسالة:
-
مفتاح واجهة برمجة التطبيقات والأذونات:
- يحتوي مفتاح واجهة برمجة التطبيقات المستخدم على وصول كامل للمسؤول، ومع ذلك تستمر الطلبات في إرجاع خطأ
404. - لقد اختبرت أيضًا استخدام مفاتيح مفصلة (مقيدة بإجراءات التعليق) ومفتاح للقراءة فقط، ولكن المشكلة مستمرة.
- ومن المثير للاهتمام، أن نقطة النهاية تعمل بشكل مثالي عند الوصول إليها عبر متصفح، ولكنها تفشل عند استخدام طلبات واجهة برمجة التطبيقات مع المفتاح.
- يحتوي مفتاح واجهة برمجة التطبيقات المستخدم على وصول كامل للمسؤول، ومع ذلك تستمر الطلبات في إرجاع خطأ
أمثلة للطلبات
مثال curl
curl -X PUT "https://your-discourse-domain.com/admin/users/15/suspend.json" \
-H "Api-Key: [REDACTED_API_KEY]" \
-H "Api-Username: system" \
-H "Content-Type: application/json" \
-d '{"suspend_until": "2024-12-31", "reason": "Violation of community guidelines"}'
مثال PowerShell
# PowerShell Script to Suspend a User on Discourse
$baseUrl = "https://your-discourse-domain.com"
$userId = 15
$apiKey = "[REDACTED_API_KEY]"
$apiUsername = "system"
$suspendUntil = "2024-12-31"
$reason = "Violation of community guidelines"
$headers = @{
"Api-Key" = $apiKey
"Api-Username" = $apiUsername
"Content-Type" = "application/json"
}
$body = @{
suspend_until = $suspendUntil
reason = $reason
} | ConvertTo-Json
$endpoint = "$baseUrl/admin/users/$userId/suspend.json"
try {
$response = Invoke-RestMethod -Uri $endpoint -Method Put -Headers $headers -Body $body -ErrorAction Stop
Write-Host "User suspended successfully!" -ForegroundColor Green
} catch {
Write-Host "Error suspending user:" -ForegroundColor Red
Write-Host $_.Exception.Message
}
تفاصيل إضافية
- إصدار Discourse: 3.4.0.beta3
- خطوات استكشاف الأخطاء وإصلاحها التي تم اتخاذها:
لقد حاولت تعديل رؤوس الطلبات، بما في ذلكUser-AgentوReferer، ولكن دون جدوى.
أي رؤى أو اقتراحات للمساعدة في حل هذه المشكلات ستكون موضع تقدير كبير. شكرًا مقدمًا على وقتك ودعمك!
مع خالص التقدير،
روس