مقدمة;
Fastify هو إطار عمل ويب لـ Node.js يركز على تقديم حل عالي الأداء وذو تحميل منخفض لبناء تطبيقات الويب وواجهات برمجة التطبيقات (APIs). تم تصميمه ليكون بسيط الاستخدام مع تقديم ميزات قوية تجعله مثاليًا لمجموعة واسعة من حالات الاستخدام. يتفاخر Fastify بأرقام أداء مثيرة للإعجاب ويُعرف بقدرته على التعامل مع الأحمال العالية بكفاءة.
مزايا Fastify:
- الأداء: تم بناء Fastify مع التركيز على السرعة، مما يجعله واحدًا من أسرع أطر ويب المتاحة لـ Node.js. إن تحميله المنخفض وهندسته الفعالة يساهمان في تقليل أوقات الاستجابة وتحسين الأداء العام.
- التحقق القائم على المخطط: يوفر Fastify دعمًا مدمجًا للتحقق القائم على المخطط لحزم الطلبات والاستجابات. يتيح ذلك للمطورين تحديد توقعات واضحة للبيانات الواردة، مما يؤدي إلى تحسين الموثوقية والأمان.
- قابلية التمديد: Fastify قابل للتمديد بشكل كبير، مما يسمح للمطورين بإضافة إضافات ووسائط مخصصة بسهولة لتعزيز وظائف تطبيقاتهم. يجعل هذا الأمر قابلاً للتكيف مع مجموعة واسعة من متطلبات المشاريع.
- الدعم غير المتزامن: يحتضن Fastify أنماط البرمجة غير المتزامنة بالكامل، مما يجعله مناسبًا بشكل جيد للتعامل مع العمليات المرتبطة بمدخلات/مخرجات بطريقة فعالة. يستفيد من ميزات جافا سكريبت الحديثة مثل async/await لتبسيط الكود غير المتزامن.
- صديق للمطورين: مع واجهته البرمجية السهلة والفهم الواسع من الوثائق، يهدف Fastify إلى تقديم تجربة سهلة للمطورين. يقدم بناء جملة واضح وموجز، مما يسهل فهمه واستخدامه لكل من المبتدئين والمطورين ذوي الخبرة.
ما الذي سيتم تغطيته في هذا الدليل:
في هذا الدليل، سنغطي أساسيات استخدام Fastify لبناء واجهة برمجة تطبيقات بسيطة. بدءًا من إعداد مشروع Fastify، سنستكشف تدريجياً ميزاته الرئيسية، بما في ذلك التعامل مع المسارات، والتحقق من الطلبات، والوسائط، والتعامل مع الأخطاء، والاختبار، والنشر. بحلول نهاية الدليل، سيكون لديك فهم جيد لكيفية استخدام Fastify لإنشاء تطبيقات ويب قوية وفعالة.
متطلبات سابقة
قبل أن نبدأ، تأكد من أنك قد قمت بتثبيت المتطلبات السابقة التالية:
- Node.js و npm: يحتاج Fastify إلى تثبيت Node.js و npm على نظامك. يمكنك تنزيلهما وتثبيتهما من الموقع الرسمي لـ Node.js.
- معرفة أساسية بجافا سكريبت و Node.js: يفترض هذا الدليل أنك لديك فهم أساسي لجافا سكريبت وكيفية العمل مع Node.js. سيكون من المفيد أن تكون على دراية بمفاهيم مثل استدعاءات الدالة، والوعود، والوحدات أثناء استكشاف ميزات Fastify.
مع وجود هذه المتطلبات السابقة، أنت مستعد للغوص في البناء باستخدام Fastify! دعنا نبدأ.
إعداد Fastify
تثبيت Fastify عبر npm
لبدء استخدام Fastify، ستحتاج أولاً إلى تثبيته عبر npm، وهو مدير الحزم لـ Node.js. إذا كنت من محبي Yarn أو Bun، يمكنك محاولة استخدامهما أيضًا. في هذا الدليل، سأستخدم NPM.
وفي حال كنت لا تعرف، أو لا تفهم تمامًا كيفية استخدام NPM، يمكنك مراجعة هذا الدليل عن كيفية التعامل معه.
للبدء، أنشئ مجلدًا جديدًا على سطح المكتب أو دليل العمل الخاص بك حيث تود إعداد مشروع Fastify.
للقيام بذلك، قم ببساطة بتشغيل الكود التالي على طرفيتك، خطوة بخطوة متبعًا كل منها
mkdir my-fastify-project
cd my-fastify-project
الآن، لقد أنشأت مجلدًا وانتقلت إلى ذلك المجلد من طرفيتك. عمل جيد!
التالي، قم بتهيئة npm لهذا المشروع، وتثبيت إطار العمل Fastify.
npm init -y
npm install fastify
في هذه المرحلة، يتكون مشروعك من ملف package.json
، وpackage-lock.json
، وnode_modules
، الذي يحتوي على بيانات وصفية حول مشروعك واعتماداته. بينما نستمر في بناء تطبيق Fastify الخاص بنا، سنضيف المزيد من الملفات والمجلدات إلى هذه البنية.
إنشاء خادم بسيط
إعداد خادم Fastify أساسي
الآن بعد أن أعددنا مشروعنا، دعنا ننشئ خادم Fastify بسيط. أنشئ ملفًا جديدًا يسمى index.js
في دليل مشروعك وأضف الكود التالي:
// استيراد وحدة Fastify
const fastify = require('fastify')();
// تعريف معالج مسار لعنوان URL الجذر
fastify.get('/', async (request, reply) => {
return { hello: 'world' };
});
// بدء تشغيل الخادم
const start = async () => {
try {
await fastify.listen({ port: 3000 });
console.log('الخادم يعمل على http://localhost:3000');
} catch (error) {
console.error('خطأ في بدء تشغيل الخادم:', error);
process.exit(1);
}
};
start();
يقوم هذا الكود بإعداد خادم Fastify أساسي يستمع لطلبات HTTP الواردة على المنفذ 3000
. عندما يتم تقديم طلب إلى عنوان URL الجذر (/)
، فإنه يستجيب بجسم JSON يحتوي على الرسالة "hello": "world".
لكي يعمل الكود التالي، نحتاج إلى إخبار الخادم بالعمل. كيف يمكننا القيام بذلك؟ حسنًا، يمكننا تشغيل node index.js
على طرفيتنا في مجلد الجذر للمشروع وسيعمل.
لكن هذا يعني أننا سنجبر على تشغيل هذا الأمر في كل مرة نقوم فيها بتحديث ملف. لا نريد تلك الضغوط. يجب أن نكون قادرين على حفظ الملف، وتحفيز إعادة البناء تلقائيًا. كيف يمكننا القيام بذلك؟
حسنًا، هنا يأتي دور Nodemon.
لتثبيت Nodemon، قم ببساطة بتشغيل الكود التالي في الطرفية؛npm install nodemon --save-dev
.
سيؤدي ذلك إلى تثبيت Nodemon وسنكون قادرين على التركيز على كودنا بدلاً من الإشارة إليه لإعادة البناء يدويًا.
لكننا لم ننته بعد من Nodemon. أعدك أن هذه هي آخر قطعة من الكود التي سنقوم بتكوينها لـ Nodemon. ماذا نحتاج للقيام به؟ نحتاج إلى إخبار Nodemon بتحفيز التشغيل التلقائي كلما حفظنا ملفًا. كيف نقوم بذلك؟
افتح ملف package.json
الخاص بك، واستبدل قسم script
بالكود التالي:
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "echo \"خطأ: لم يتم تحديد اختبار\" && exit 1"
},
وهناك نكون! انتهينا من تكوين Nodemon، أعدك!
الآن لبدء خادمنا، نحتاج إلى تشغيل npm run dev
على دليل الجذر للمشروع الخاص بنا. بمجرد الانتهاء من ذلك، انتقل إلى متصفحك واكتب http://localhost:3000/
- سترى استجابتنا النموذجية hello world
كما حددنا في ملف index.js
أعلاه.

إضافة مسارات للتعامل مع طرق HTTP المختلفة (GET، POST، إلخ)
يُعد Fastify سهل البناء واجهات برمجة التطبيقات REST / تعريف المسارات للتعامل مع طرق HTTP المختلفة مثل GET و POST و PUT و DELETE، إلخ. دعنا نضيف مسارًا للتعامل مع طلب POST. قم بتحديث ملف index.js
الخاص بك بالكود التالي:
// تعريف معالج مسار للتعامل مع طلبات POST إلى '/data'
fastify.post('/data', async (request, reply) => {
const payload = request.body;
// معالجة البيانات الواردة
// لنعد بالإرسال مرة أخرى البيانات المستلمة
return { receivedData: payload };
});
الآن، يمكن لخادم Fastify لدينا التعامل مع طلبات GET إلى عنوان URL الجذر (/
) وطلبات POST إلى نقطة النهاية /data
.
الاستجابة ببيانات JSON
في كل من معالجات المسار التي عرفناها ('/'
و'/data'
)، نحن نستجيب ببيانات JSON باستخدام طرق الاستجابة المدمجة في Fastify. يقوم Fastify تلقائيًا بتسلسل كائنات جافا سكريبت إلى JSON، مما يسهل إرسال بيانات هيكلية كاستجابات.
مع هذه الإضافات، أصبح خادم Fastify لدينا الآن قادرًا على التعامل مع طلبات HTTP الأساسية والاستجابة ببيانات JSON.
لكن كيف نختبر طلب POST
؟ لا يمكننا اختبار طلب POST
من المتصفح، أليس كذلك؟
لمساعدتنا، سنستخدم Apidog.
يمكنك التسجيل للحصول على حساب مجاني، تجربة واجهة الويب، أو تنزيل التطبيق المكتبي لاختبار واجهات برمجة التطبيقات التي أنشأتها للتو.
لمساعدتك على فهم كيفية استخدام Apidog، إليك دليل مكتوب جيدًا. لتجنب الحديث الطويل والقراءة، يمكنك إجراء مسح خلال هذا القسم - هذا هو الأكثر أهمية بالنسبة لنا الآن.
إذا كنت قد تابعت الدليل أعلاه، يجب أن تكون مألوفًا مع Apidog إلى حد كبير.

اضغط على الطلب من صفحة المشروع، وستتمكن من اختبار واجهة برمجة التطبيقات التي أنشأناها من خادم Fastify.

كما ترى من لقطات الشاشة أعلاه، ستحتاج إلى تعيين طريقة HTTP إلى POST، أدخل عنوان URL الصحيح (تأكد من أن خادمك لا يزال يعمل)، وأدخل حمولة جسمك.
سيوفر لك اتباع الخطوات أعلاه بشكل صحيح رمز استجابة 200، وستتمكن من رؤية الاستجابة.
إذا سارت الأمور بشكل جيد بالنسبة لك، يجب أن تحصل على نفس الاستجابة التي حصلت عليها.
الوسائط والإضافات
مقدمة إلى الوسائط في Fastify
وظائف الوسيط في Fastify هي وظائف تتمتع بالوصول إلى كائنات الطلب والاستجابة ويمكن أن تقوم بأداء مهام مثل تسجيل الدخول، والتحقق من الهوية، وتحليل البيانات، إلخ، قبل تمرير التحكم إلى وظيفة الوسيط أو معالج المسار التالي. يتم تنفيذ وظائف الوسيط بالترتيب الذي تمت إضافتها إلى سلسلة التطبيقات.
إنشاء وظائف وسيطة مخصصة
يمكنك إنشاء وظائف وسيطة مخصصة في Fastify عن طريق تعريف وظائف تقبل معلمات request
وreply
وnext
. إليك مثالًا على وسيط تسجيل مخصص:
// وسيط تسجيل مخصص
const loggerMiddleware = async (request, reply, next) => {
console.log(`[${new Date().toISOString()}] ${request.method} ${request.url}`);
next();
};
// تسجيل الوسيط مع Fastify
fastify.use(loggerMiddleware);
في هذا المثال، تقوم وظيفة loggerMiddleware
بتسجيل الطابع الزمني، وطريقة HTTP، وعنوان URL لكل طلب وارد. ثم تستدعي الدالة next()
لتمرير التحكم إلى وظيفة الوسيط التالية أو معالج المسار.
هذه هي الطريقة التي يعمل بها الوسيط كليًا في Node.js وأطره الأخرى مثل Express.js.
تثبيت واستخدام إضافات Fastify
يوفر Fastify نظامًا بيئيًا غنيًا من الإضافات التي توسع من وظائفه لمجموعة متنوعة من الأغراض مثل التحقق من الهوية، ودمج قواعد البيانات، والتحقق، إلخ. يمكنك تثبيت واستخدام إضافات Fastify عبر npm. إليك كيفية تثبيت إضافة وتسجيلها مع Fastify:
npm install fastify-auth fastify-cors
// استيراد الإضافات المطلوبة
const fastifyAuth = require('fastify-auth');
const fastifyCors = require('fastify-cors');
// تسجيل الإضافات مع Fastify
fastify.register(fastifyAuth);
fastify.register(fastifyCors);
في هذا المثال، قمنا بتثبيت وتسجيل إضافتين: fastify-auth
للتحقق من الهوية وfastify-cors
لدعم مشاركة الموارد عبر الحدود (CORS).
ولكن انتظر. لن نختبر ذلك. تلك مجرد أمثلة تظهر كيفية تثبيت وتشغيل الوسائط والإضافات في Fastify.
إليك مقالة لتعلم المزيد عن الوسائط والإضافات. يمكنك القيام بأبحاثك واكتشافاتك الخاصة. فقط لا تختلط الأمور. الوسائط في Node.js و Fastify موضوع واسع.
معالجة الأخطاء
معالجة الأخطاء في مسارات Fastify
في Fastify، يمكنك معالجة الأخطاء في معالجات المسار عن طريق طرح الأخطاء أو إعادتها من الدوال غير المتزامنة. يقوم Fastify تلقائيًا بالتقاط هذه الأخطاء وإرسال استجابة خطأ مناسبة إلى العميل. إليك مثال:
// معالج المسار مع معالجة الأخطاء
fastify.get('/error', async (request, reply) => {
// محاكاة خطأ
throw new Error('عذرًا! حدث خطأ ما.');
});
من هذا المثال، إذا انتقل المستخدم إلى /error الذي لا يوجد أو شيء آخر، يمكننا طرح خطأ وإبلاغ المستخدم بما يجري.
إذا كنت فضولياً (يجب عليك أن تكون)، إليك مقالة لتتعلم المزيد عن الأخطاء.
من خلال الاستفادة من الوسائط، والإضافات، وميزات معالجة الأخطاء في Fastify، يمكنك تعزيز وظائف وموثوقية تطبيقات الويب وواجهات برمجة التطبيقات الخاصة بك. تسمح لك هذه الميزات بتقسيم التعليمات البرمجية الخاصة بك وإضافة مكونات قابلة لإعادة الاستخدام، والتعامل مع الأخطاء بطريقة محسنة، مما يؤدي إلى تطبيقات أكثر قدرة على الصيانة ومتينة.
الخاتمة
في هذا الدليل، قمنا بتغطية مقدمة شاملة عن Fastify، إطار عمل ويب سريع وذو حمل منخفض لـ Node.js. إليك ملخص لمواضيع الرئيسية التي استكشفناها:
- مقدمة عن Fastify: بدأنا بمناقشة Fastify ومزاياه مقارنة بإطارات Node.js الأخرى، بما في ذلك فوائد الأداء، وواجهة برمجة التطبيقات سهلة الاستخدام، ونظام البيئات الإضافية الغني.
- إعداد Fastify: استعرضنا عملية تثبيت Fastify باستخدام npm، وتهيئة مشروع Fastify جديد، واستكشاف هيكل المشروع. هذا أسس لبناء تطبيقات Fastify.
- إنشاء خادم بسيط: أظهرنا كيفية إعداد خادم Fastify أساسي، إضافة مسارات للتعامل مع طرق HTTP المختلفة، والاستجابة ببيانات JSON. هذا أثرى بساطة ومرونة تعريف المسارات والتعامل مع الطلبات في Fastify.
- الوسائط والإضافات: قدمنا مفهوم الوسائط في Fastify وأظهرنا كيفية إنشاء وظائف وسيطة مخصصة. بالإضافة إلى ذلك، ناقشنا كيفية توسيع وظائف Fastify باستخدام الإضافات، وتثبيتها واستخدامها لإضافة ميزات مثل التحقق من الهوية ودعم CORS.
- معالجة الأخطاء: تناولنا معالجة الأخطاء في Fastify، بما في ذلك كيفية التعامل مع الأخطاء في المسارات، واستخدام ميزات معالجة الأخطاء المدمجة في Fastify، وتنفيذ منطق معالجة الأخطاء المخصص لإدارة الاستثناءات وتقديم استجابات خطأ ذات معنى للعملاء.
من خلال هذا الدليل، حصلت على المعرفة للبدء في بناء تطبيقات ويب وواجهات برمجة التطبيقات باستخدام Fastify. لقد تعلمت عن الميزات الأساسية لـ Fastify، وكيفية التعامل مع الطلبات والاستجابات، وتوسيع الإطار باستخدام الإضافات، وإدارة الأخطاء بفعالية. مع هذه المهارات، أنت مجهز جيدًا لاستكشاف ميزات أكثر تقدمًا في Fastify وإنشاء تطبيقات ويب فعالة وقابلة للتوسع.
بينما تواصل العمل مع Fastify، تذكر أن تستكشف الوثائق الشاملة ونظام الإضافات المتاحة. تحظى مجتمع Fastify بفاعلية ودعم، مما يوفر ثروة من الموارد لمساعدتك في تطوير مهاراتك وبناء تطبيقات قوية.
شكرًا لاتباعك هذا الدليل حول Fastify. حظًا سعيدًا في البرمجة!