معالجات المسار
جزء من قسم أساسيات Next.js في رحلة React على Coddy — الدرس 37 من 47.
تغطي مكونات الخادم (Server components) معظم احتياجات البيانات، لأنها تعمل على الخادم بالفعل. ولكن في بعض الأحيان يتعين على المتصفح طلب البيانات لاحقًا، بعد النقر، أو بعد استقرار صندوق البحث، ولهذا السبب تحتاج إلى نقطة نهاية (endpoint) لطلبها.
المجلد الذي يحتوي على ملف route.js بداخل يصبح كذلك تمامًا. نفس قاعدة التوجيه الخاصة بالصفحات (pages)، ولكن بملف خاص مختلف:
app/
api/
dishes/
route.js -> /api/dishesفي الداخل، تقوم بتصدير تصدير دالة export مسماة باسم طريقة HTTP:
import { dishes } from '../../../lib/dishes.js';
export async function GET() {
return Response.json(dishes);
}إنّ Response.json(...) هو الرد بالكامل: فهو يقوم بتسلسل (serialize) القيمة ويضبط نوع المحتوى إلى JSON. يمكنك أيضاً تصدير POST، PUT، و DELETE من نفس الملف.
ثم إن النصف الخاص بـ client هو كود متصفح عادي:
const res = await fetch('/api/dishes');
const data = await res.json();أمران يجب التمييز بينهما. يمكن للمجلد أن يحتوي على page.jsx أو route.js، وليس كلاهما أبداً: حيث سينادي كلاهما على نفس عنوان URL. كما أن route.js ليس مكوّناً (component): فهو يرجع Response، وليس JSX.
استعن بـ route handler عندما يحتاج المتصفح إلى البيانات عند الطلب، أو عندما يحتاج شيء ما خارج تطبيقك إلى إجراء call داخلي. إذا كان بإمكان server component قراءة البيانات أثناء العرض، فدعها تقوم بذلك.
التحدي
متوسطقم ببناء API صغير واستدعائه من المتصفح.
- في
app/api/dishes/route.js، قم بتصديرasync function GETتُرجعdishesكـ JSON. - في
components/DishLoader.jsx، أكمِلloadDishes: قم بعمل fetch لـ/api/dishes، واقرأ جسم الـ JSON، ثم قم بتخزين names الأطباق باستخدامsetNames.
النقر على #load-btn يجب أن يملأ #dish-list بجميع الأسماء الأربعة.
جرّب بنفسك
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات Next.js
4الخادم والعميل (Server & Client)
نوعان من المكوناتقراءة الخطأسطر 'use client'الحفاظ على أجزاء العميل صغيرةخادم داخل عميلملخص: الخادم والعميل2التوجيه والروابط
المجلدات هي مسارات التوجيهالمسارات المتداخلةربط الصفحاتالمسارات الديناميكيةصفحات غير موجودةملخص: التوجيه3التخطيطات والبيانات الوصفية
التخطيط الرئيسيالتنقل المشتركالتخطيطات المتداخلةالبيانات الوصفية للصفحةالبيانات الوصفية الديناميكيةملخص: التخطيطات6إجراءات الخادم (Server Actions)
ما هو إجراء الخادم (Server Action)؟نماذج تعمل وتتفاعلقراءة بيانات النموذجتحديث الصفحةملخص: إجراءات الخادم