توثيق API الرفع
ارفع الصور برمجياً من موقعك الثاني واحصل على رابط مباشر.
1 - الـ Endpoint
/api/upload نوع المحتوى: multipart/form-data
يُرفع الملف بحقل اسمه file.
2 - المصادقة
أرسل المفتاح السري في الهيدر:
Authorization: Bearer <UPLOAD_SECRET_KEY> المفتاح يُضبط من متغير البيئة UPLOAD_SECRET_KEY. بدون مفتاح صحيح تُرفض العملية برمز 401.
3 - القيود والسلوك
الصور فقط. الحد الأقصى 5MB. اسم الملف UUID.webp. الرابط من CDN_DOMAIN. كاش سنة كاملة.
4 - الرد
عند النجاح (رمز 200):
{ "success": true, "url": "https://cdn.example.com/a1b2c3d4-....webp" } أكواد الخطأ: 400 بيانات غير صالحة · 401 مفتاح خاطئ · 413 حجم كبير · 500 خطأ خادم.
5 - أمثلة
cURL
curl -X POST https://rafie.example.com/api/upload \
-H "Authorization: Bearer YOUR_SECRET_KEY" \
-F "file=@/path/to/cover.webp" JavaScript / Node.js
const fd = new FormData();
fd.append("file", file, "cover.webp");
const res = await fetch("https://rafie.example.com/api/upload", {
method: "POST",
headers: { "Authorization": "Bearer " + process.env.UPLOAD_SECRET_KEY },
body: fd,
});
const data = await res.json();
console.log(data.url); // https://cdn.example.com/uuid.webp Python
import requests
url = "https://rafie.example.com/api/upload"
headers = {"Authorization": "Bearer YOUR_SECRET_KEY"}
with open("cover.webp", "rb") as f:
resp = requests.post(url, headers=headers, files={"file": f})
print(resp.json()["url"]) 6 - التكامل من موقعك الثاني
احفظ UPLOAD_SECRET_KEY في متغيرات بيئة موقعك الثاني (لا تضعه في كود الواجهة أبداً).
عند رفع غلاف رواية مثلاً، اضغط الصورة إلى WebP في المتصفح ثم أرسلها إلى هذا الـ endpoint، واحفظ data.url في قاعدة بياناتك.
ملاحظة أمان: صفحة الرفع الرئيسية في رفعي تحتاج المفتاح، لذا يُنصح بعدم نشر هذا الموقع بشكل عام أو تقييده، لأن المفتاح يظهر في كود الواجهة لمن يفتح الصفحة.