تخطَّ إلى المحتوى

الـ CRUD Routes: API endpoints كاملة

الدرس 7 من 38

الهدف

بعد هالدرس تقدر تبني API كامل للـ CRUD — قراءة وإنشاء وتعديل وحذف — مع validation بـ Zod وحماية كل endpoint بالـ session، وترجع responses واضحة لأي frontend.

ليش هذا الحين؟

بنيت الـ schema والـ auth — الحين وقت تربط كل شي. الـ CRUD routes هي الـ contract بين الـ frontend والـ backend. frontend يسأل، backend يجاوب. لو الـ API مو واضح أو مو محمي، كل شي فوقه راح يكون وجع. هالدرس يبني الـ backbone الحقيقية للتطبيق.

الفكرة

الـ CRUD = Create, Read, Update, Delete — العمليات الأساسية على أي resource.

HTTP methods والـ CRUD:

Operation HTTP Method Route
قراءة الكل GET /api/habits
إنشاء POST /api/habits
قراءة وحدة GET /api/habits/[id]
تعديل PUT /api/habits/[id]
حذف DELETE /api/habits/[id]

Zod: Library للـ validation. تعرّف "شكل" الـ input المتوقع، و Zod يتحقق منه ويرجع errors واضحة لو مو صح. بدونها، أي بيانات غلط تدخل الـ database.

const schema = z.object({ name: z.string().min(1).max(100) });
const result = schema.safeParse(body);
// result.success = true أو false
// result.error = الـ validation errors

HTTP Status Codes:

  • 200 — OK (GET ناجح)
  • 201 — Created (POST ناجح)
  • 204 — No Content (DELETE ناجح)
  • 400 — Bad Request (validation فشل)
  • 401 — Unauthorized (مو مسجل دخول)
  • 403 — Forbidden (مسجل بس ما عنده صلاحية)
  • 404 — Not Found
  • 500 — Server Error (خطأ غير متوقع)

قاعدة الأمان: كل endpoint يبدأ بالتحقق من الـ session. مو خطوة اختيارية — ضرورية. لو ما عندك session، ترجع 401 مباشرة.

Next.js App Router API routes: كل ملف route.ts داخل src/app/api/ يعرّف HTTP handlers. export async function GET() يتعامل مع GET requests، والباقي نفس الشي.

محتاج مساعدة؟ راسلنا على mj@shakesbeard.net