Apidog

منصة تطوير API تعاونية متكاملة

تصميم API

توثيق API

تصحيح أخطاء API

محاكاة API

اختبار API الآلي

كيفية إنشاء واجهة برمجة تطبيقات REST باستخدام Node.js و Express

تقدم واجهات برمجة التطبيقات REST وسيلة منظمة وقابلة للتوسع لتواصل مكونات البرمجيات المختلفة عبر الإنترنت. يُعد Node.js، وهو بيئة تشغيل جافا سكريبت على جانب الخادم، وExpress، وهو إطار عمل شائع لـ Node.js، تركيبة قوية لإنشاء واجهات برمجة التطبيقات RESTful.

Amir Hassan

Amir Hassan

Updated on نوفمبر 29, 2024

في عالم اليوم المتصل، أصبح بناء APIs قوية وقابلة للتوسع ضرورة لتمكين الاتصال السلس بين مكونات البرمجيات المتنوعة. لقد ظهرت REST APIs كمعيار فعلي لتسهيل تبادل البيانات عبر الويب، مستفيدة من قوة بروتوكول HTTP.

لقد نالت Node.js، وهي بيئة تشغيل جافا سكريبت مبنية على محرك V8 من Chrome، شهرة في إنشاء APIs خفيفة وفعالة. إن نموذج الإدخال والإخراج غير المحجوز المعتمد على الأحداث يتفوق في التعامل مع الاتصالات المتزامنة، مما يجعلها مثالية لـ APIs القابلة للتوسع وفي الوقت الحقيقي.

تُبسط أطر العمل مثل Express.js عملية التطوير، مما يسمح للمطورين ببناء APIs قوية لحالات الاستخدام المتنوعة بسرعة. بالنسبة لمطوري الويب الذين يسعون لإنشاء APIs تعتمد على REST، فإن Node.js وExpress تقدم مجموعة قوية لتسهيل العملية.

💡
Apidog هو أداة API شاملة توفر طرق HTTP متعددة الاستخدامات لمختلف سيناريوهات الاستخدام. تقدم مجموعة شاملة من الميزات، بما في ذلك اختبار API، الوثائق، وقدرات التعاون، مما يجعلها حلاً قويًا للفرق التي تطور وتدير APIs. جربها الآن!
button

ما هو REST API؟

REST API هو نمط معماري يستفيد من بروتوكول HTTP لتسهيل تبادل البيانات بين تطبيقات العميل والخادم. يعتمد على مجموعة من القيود والمبادئ، بما في ذلك واجهة موحدة، اتصالات بدون حالة، واستخدام طرق HTTP القياسية (GET، POST، PUT، DELETE) لأداء العمليات على الموارد.

المفاهيم الرئيسية لـ REST API

1. الموارد

الموارد هي الوحدات الأساسية في REST. يتم التعرف على كل مورد من خلال عنوان URL (محدد موقع المورد الموحد). على سبيل المثال، في API REST لإدارة الكتب، قد تكون الكتابة موردًا يمكن الوصول إليه عبر /books/1.

2. طرق HTTP

تستخدم REST APIs طرق HTTP القياسية للتفاعل مع الموارد:

  • GET: استرجاع البيانات من الخادم (مثل الحصول على قائمة من الكتب أو كتاب واحد).
  • POST: إرسال بيانات إلى الخادم لإنشاء مورد جديد (مثل إضافة كتاب جديد).
  • PUT: تحديث مورد موجود ببيانات جديدة (مثل تحديث تفاصيل كتاب موجود).
  • DELETE: إزالة مورد من الخادم (مثل حذف كتاب).

3. عدم الحالة

يجب أن تحتوي كل طلب من عميل إلى خادم على جميع المعلومات التي يحتاجها الخادم لتنفيذ ذلك الطلب. لا يخزن الخادم أي حالة حول جلسة العميل بين الطلبات. وهذا يجعل REST APIs قابلة للتوسع وسهلة الصيانة.

4. التمثيلات

يمكن تمثيل الموارد بتنسيقات مختلفة، مثل JSON (تنسيق كائن جافا سكريبت)، XML (لغة ترميز موسعة)، أو نص عادي. JSON هو التنسيق الأكثر استخدامًا بسبب طبيعته الخفيفة وسهولة استخدامه.

5. واجهة موحدة

تم تصميم REST APIs لتوفير واجهة موحدة تسمح بتفاعل متسق مع الموارد. يتضمن ذلك:

  • تحديد الموارد: تحدد عناوين URL الموارد بشكل فريد.
  • معالجة الموارد من خلال التمثيلات: يستخدم العملاء التمثيلات للتفاعل مع الموارد (مثل إرسال بيانات JSON لإنشاء أو تحديث مورد).
  • رسائل ذات وصف ذاتي: تتضمن كل رسالة معلومات كافية لوصف كيفية معالجتها.
  • الأنظمة الهايبرميديا كمحرك لحالة التطبيق (HATEOAS): يتفاعل العملاء مع الموارد بالكامل من خلال الروابط التي يوفرها الخادم بشكل ديناميكي.

6. بنية العميل والخادم

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

7. إمكانية التخزين المؤقت

يمكن تمييز الاستجابات من REST API بشكل صريح بأنها قابلة للتخزين المؤقت أو غير قابلة للتخزين المؤقت. يسمح ذلك للعملاء بتخزين الاستجابات لتحسين الأداء وتقليل الحاجة إلى الطلبات المتكررة.

مثال على REST API في العالم الحقيقي

إليك مثال على نقاط النهاية لـ API REST لمكتبة:

1. الحصول على قائمة بجميع الكتب

  • نقطة النهاية: /books
  • طريقة HTTP: GET
  • الوصف: يسترجع قائمة بجميع الكتب في المكتبة.
  • الطلب:
GET /books
  • الاستجابة:
[
    {
        "id": 1,
        "title": "1984",
        "author": "جورج أورويل",
        "published_year": 1949
    },
    {
        "id": 2,
        "title": "لقتل طائر المحاكاة",
        "author": "هاربر لي",
        "published_year": 1960
    }
]

2. الحصول على تفاصيل كتاب معين

  • نقطة النهاية: /books/{id}
  • طريقة HTTP: GET
  • الوصف: يسترجع تفاصيل كتاب معين حسب معرفه.
  • الطلب:
GET /books/1
  • الاستجابة:
{
    "id": 1,
    "title": "1984",
    "author": "جورج أورويل",
    "published_year": 1949
}

3. إضافة كتاب جديد

  • نقطة النهاية: /books
  • طريقة HTTP: POST
  • الوصف: يضيف كتابًا جديدًا إلى المكتبة.
  • الطلب:
POST /books
Content-Type: application/json

{
    "title": "عالم جديد جريء",
    "author": "ألدوس هكسلي",
    "published_year": 1932
}
  • الاستجابة:
{
    "id": 3,
    "title": "عالم جديد جريء",
    "author": "ألدوس هكسلي",
    "published_year": 1932
}

4. تحديث كتاب موجود

  • نقطة النهاية: /books/{id}
  • طريقة HTTP: PUT
  • الوصف: يقوم بتحديث تفاصيل كتاب موجود.
  • الطلب:
PUT /books/1
Content-Type: application/json

{
    "title": "1984",
    "author": "جورج أورويل",
    "published_year": 1948
}
  • الاستجابة:
{
    "id": 1,
    "title": "1984",
    "author": "جورج أورويل",
    "published_year": 1948
}

ما هي Node.js؟

Node.js، وهي بيئة تشغيل JavaScript على الخادم، وExpress، إطار العمل الشائع لـ Node.js، يشكلان مجموعة قوية لإنشاء APIs تعتمد على REST. في هذا المقال، سوف نستعرض عملية إنشاء API REST باستخدام Node.js وExpress، خطوة بخطوة، مع أمثلة عملية.

لماذا نستخدم Node.js وExpress لبناء REST API؟

يقدم استخدام Node.js وExpress لإنشاء APIs عددًا من المزايا التي تجعلها خيارًا شائعًا بين المطورين. إليك بعض الفوائد الرئيسية:

1. أداء عالي وقابلية للتوسع

تم بناء Node.js على محرك V8 من Google، الذي يقوم بتحويل JavaScript مباشرةً إلى كود آلية. يؤدي ذلك إلى أداء عالي وسرعة. تم تصميم Node.js أيضًا بنموذج إدخال وإخراج غير محجوز مدفوع بالأحداث، مما يجعله فعالًا للغاية وقابلًا للتوسع للتعامل مع العديد من الاتصالات المتزامنة.

2. جافا سكريبت في كل مكان

تتيح Node.js للمطورين استخدام JavaScript لكل من تطوير الواجهة الأمامية والواجهة الخلفية. تقلل هذه الاتساق من منحنى التعلم وتبسط عملية التطوير، حيث يمكن للمطورين استخدام نفس اللغة وهياكل البيانات عبر مجموعة التطبيقات بالكامل.

3. دورة تطوير سريعة

تتيح Node.js، إلى جانب Express، تطوير التطبيقات بسرعة. Express هو إطار عمل مرن ومبسط يوفر مجموعة قوية من الميزات لتطبيقات الويب والمحمول. يُبسط التوجيه وإدارة الوسائط وتقديم العروض، مما يسمح للمطورين ببناء APIs بسرعة وكفاءة.

4. نظام بيئي واسع

تمتلك Node.js نظامًا بيئيًا غنيًا من المكتبات والوحدات المتاحة من خلال npm (مدير حزم Node). تسرع هذه المجموعة الواسعة من الوحدات الجاهزة من عملية التطوير بشكل كبير من خلال السماح للمطورين بإعادة استخدام الأكواد الموجودة للمهام الشائعة.

5. JSON وRESTful APIs

تعتبر Node.js وExpress مناسبتين تمامًا لبناء RESTful APIs المعتمدة على JSON. تسهل دعم JavaScript الأصلي لـ JSON تبادل البيانات بين الخادم والعميل. كما أن طبيعة Express الخفيفة تجعلها مثالية لإنشاء نقاط النهاية RESTful بكفاءة.

6. قدرات في الوقت الحقيقي

تتفوق Node.js في بناء التطبيقات في الوقت الحقيقي، مثل تطبيقات الدردشة أو ميزات التحديث المباشر. يسمح هيكلها غير المحجوز بالتعامل مع تدفق البيانات في الوقت الحقيقي والتفاعلات بسلاسة.

7. دعم المجتمع

تتمتع Node.js بمجتمع واسع ونشيط. يساهم هذا المجتمع الحيوي في ثروة من المكتبات والأدوات والإطارات مفتوحة المصدر، مما يضمن أن المطورين يمكنهم الوصول إلى أحدث الممارسات وأفضل الحلول للمشاكل الشائعة والتحديثات المستمرة.

8. بنية الخدمات الصغيرة

تعتبر Node.js مناسبة تمامًا لبنية الخدمات الصغيرة. تسمح طبيعتها الخفيفة للمطورين بإنشاء خدمات صغيرة ومستقلة يمكن نشرها وتوسيعها بشكل فردي. تؤدي هذه التركيبية إلى تحسين سهولة الصيانة وقابلية التوسع للتطبيقات.

9. تطوير عبر الأنظمة الأساسية

تعتبر Node.js متعددة الأنظمة الأساسية، مما يعني أنها يمكن أن تعمل على أنظمة تشغيل مختلفة، بما في ذلك Windows وmacOS وLinux. تعتبر هذه المرونة مفيدة لتطوير التطبيقات التي تحتاج إلى العمل في بيئات مختلفة.

10. سهولة التعلم والاستخدام

بالنسبة للمطورين الذين لديهم دراية بـ JavaScript، فإن تعلم Node.js وExpress يعد أمرًا بسيطًا نسبيًا. تجعل بساطة وMinimalism  Express من السهل البدء في بناء APIs دون الحاجة إلى منحنى تعلم حاد.

المتطلبات الأساسية

قبل أن نبدأ في بناء API REST، تأكد من أن لديك الأدوات والمعرفة التالية:

  1. Node.js وnpm: قم بتثبيت Node.js، الذي يتضمن npm (مدير حزم Node)، من الموقع الرسمي.
  2. محرر نصوص أو IDE: اختر محرر الأكواد الذي تفضله. من الخيارات الشائعة Visual Studio Code وSublime Text وWebStorm.
  3. معرفة أساسية بجافا سكريبت: تعتبر فهم جافا سكريبت أمرًا أساسيًا لتطوير Node.js.

دليل خطوة بخطوة لإنشاء REST API باستخدام Node.js

الخطوة 1: بدء مشروعك

لنبدأ بإنشاء دليل جديد لمشروعك وتهيئته باستخدام npm.

mkdir my-rest-api
cd my-rest-api
npm init -y

ستقوم هذه الخطوة بإنشاء ملف package.json مع الإعدادات الافتراضية لمشروعك.

الخطوة 2: تثبيت الاعتمادات

نحتاج إلى بعض الحزم لتشغيل API REST لدينا:

  • Express: إطار تطبيقات الويب لـ Node.js.
  • Body-parser: ميدل وير لتحليل جداول الطلبات الواردة.
  • Nodemon (اختياري): أداة تساعد في إعادة تشغيل الخادم تلقائيًا أثناء التطوير.

قم بتثبيت هذه الحزم باستخدام npm:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

app.use(bodyParser.json());

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

الخطوة 3: إنشاء تطبيق Express

الآن، لنقم بإنشاء تطبيق Express وضبط خادم أساسي.

javascriptCopy codeconst express = require('express');const bodyParser = require('body-parser');const app = express();use(bodyParser.json());const port = process.env.PORT || 3000;listen(port, () => {console.log(`Server is running on port ${port}`);

هنا، أنشأنا تطبيق Express أساسي، وأضفنا ميدل وير body-parser لتحليل بيانات JSON، وبدأنا تشغيل خادم على المنفذ 3000.

الخطوة 4: تحديد المسارات

في API REST، تحدد المسارات النقاط النهائية لمختلف طرق HTTP (GET، POST، PUT، DELETE). لنقم بإنشاء مثال بسيط باستخدام طلب GET.

app.get('/api/hello', (req, res) => {
  res.json({ message: 'Hello, World!' });
});

يحدد هذا الكود مسارًا لـ /api/hello يستجيب برسالة JSON عند الوصول إليه عبر طلب GET.

الخطوة 5: تشغيل API الخاص بك

يمكنك تشغيل API الخاص بك باستخدام Node.js، ولكن أثناء التطوير، من المفيد استخدام Nodemon، الذي سيعيد تشغيل الخادم تلقائيًا عند تغييرات الكود.

npm start

الآن، إذا قمت بالوصول إلى http://localhost:3000/api/hello، ينبغي أن ترى رسالة "Hello, World!"

الخطوة 6: إضافة المزيد من المسارات

لإنشاء API مفيد، ستحتاج إلى تحديد المزيد من المسارات وتنفيذ العمليات CRUD (إنشاء، قراءة، تحديث، حذف) لمواردك. إليك مثال على API "قائمة المهام" بسيط.

let todos = [];

app.get('/api/todos', (req, res) => {
  res.json(todos);
});

app.post('/api/todos', (req, res) => {
  const newTodo = req.body;
  todos.push(newTodo);
  res.status(201).json(newTodo);
});

// تنفيذ PUT و DELETE كتمرين

في هذا المثال، أضفنا مسارات لإدراج وإنشاء عناصر المهام. يمكنك توسيع ذلك عن طريق تنفيذ PUT وDELETE لتحديث وحذف المهام.

الخطوة 7: اختبار API الخاص بك

اختبار API الخاص بك أمر حيوي لضمان عمله كما هو متوقع. يمكن لأدوات مثل Apidog أو Insomnia مساعدتك في إرسال الطلبات والتحقق من الاستجابات.

الخطوة 8: نشر API الخاص بك

عندما تكون جاهزًا لمشاركة API الخاص بك مع العالم، يمكنك نشره على منصات مثل Heroku أو AWS أو Azure.

طريقة بديلة لإنشاء REST API باستخدام Apidog

Apidog يبسط تطوير REST API، مما يسهل الاختبار، الوثائق، الأمان والأداء. توضح هذه المقالة كيفية استخدام Apidog وميزاته الرئيسية.

الخطوة 1: تنزيل وتثبيت Apidog

أولاً، تحتاج إلى إنشاء حساب على Apidog. يمكن القيام بذلك عن طريق الذهاب إلى موقع Apidog والنقر على زر "إنشاء حساب". بعد التسجيل، سيتم تحويلك إلى الصفحة الرئيسية لـ Apidog.

button

الخطوة 2: إنشاء API

داخل المشروع، يمكنك إنشاء API جديد. الوثائق هي مخطط REST API، تصف موارده وعملياته ومعاييره. لإنشاء API جديد، انقر على زر "+" في صفحة المشروع.

إنشاء REST API باستخدام Apidog

الخطوة 3: تعيين معايير REST APIs

املأ طرق HTTP، نماذج الطلب/الاستجابة، معايير الاستعلام، الرؤوس، إلخ.

املأ المعلومات الأساسية لإنشاء REST API في Apidog

الخطوة 4: اختبار REST API

بعد تطوير جميع APIs، يمكنك النقر على زر "إرسال" لاختبار APIs الخاصة بك.

اختبار REST API في Apidog

استنتاج

إن إنشاء REST API باستخدام Node.js وExpress مهارة قوية لأي مطور ويب. في هذه المقالة، قمنا بتغطية الخطوات الأساسية من إعداد المشروع إلى تحديد المسارات، وحتى تناول الاختبار والنشر. تذكر أن الممارسة هي المفتاح، لذا لا تتردد في بناء APIs الخاصة بك، وتجربة وظائف مختلفة، واستكشاف ميزات أكثر تقدمًا مع تقدمك في تعلم Node.js وExpress.

مع هذه الأسس، ستكون في طريقك لتطوير تطبيقات ويب قوية وقابلة للتوسع باستخدام RESTful APIs. نتمنى لك البرمجة السعيدة!

أسئلة متكررة حول Node.js REST API

1. ما هو أفضل إطار عمل لـ Node.js REST API؟

بينما تُعد Feathers وNest وLoopBack وMoleculer أطر عمل ممتازة، إليك بعض الأسباب التي تجعل Express هو الخيار الأفضل:

غني بالميزات: توفر Express ميزات مثل هيكل نموذج-عرض-تحكم (MVC)، وقدرات التوجيه القوية، والميدل وير المدمجة، مما يمكّنك من إنشاء تطبيقات ديناميكية وقابلة للتوسع.

دعم مجتمع قوي: لديها مجتمع كبير يمكن أن يساعدك على العمل بشكل أسرع وأكثر كفاءة.

سهل الاستخدام: من السهل إعداد Express وتعلمه واستخدامه، مما يجعله خيارًا مثاليًا للمبتدئين.

2. هل يجب أن أستخدم Go أو Node لـ REST API؟

اختيار بين Go (Golang) وNode.js لبناء REST API يعتمد على عدة عوامل بما في ذلك متطلبات الأداء، سرعة التطوير، احتياجات التزامن، وخبرة فريقك.

متى يجب استخدام Go:

  • تحتاج إلى أداء وكفاءة عالية.
  • يتطلب تطبيقك التعامل مع عدد كبير من العمليات المتزامنة.
  • تفضل لغة ذات نوع ثابت للتحقق من الأخطاء أثناء الترجمة وتحسين الأداء.
  • تقوم ببناء بنية الخدمات الصغيرة حيث الأداء أمر حاسم.

متى يجب استخدام Node.js:

  • تحتاج إلى دورة تطوير سريعة والوصول إلى نظام بيئي كبير من المكتبات والأدوات.
  • تطبيقك يعتمد على إدخال/إخراج بشكل كثيف (مثل تطبيقات في الوقت الحقيقي، تطبيقات دردشة).
  • تريد استخدام JavaScript عبر كل من الواجهة الأمامية والخلفية.
  • لديك فريق لديه بالفعل خبرة في JavaScript.

3. ما هي أفضل لغة لتنفيذ REST API؟

ستعتمد أفضل لغة لتنفيذ REST API على متطلبات مشروعك المحددة، خبرة فريق تطويرك، ونظام التكنولوجيا الحالي المستخدم.

  • للنماذج السريعة: Python (Flask/Django) أو Ruby (Rails).
  • لأداء عالي: Go أو C# (ASP.NET Core).
  • للأنظمة البيئية الحالية والمجتمع: JavaScript (Node.js) أو PHP.
  • للتطبيقات على مستوى المؤسسات: Java أو C#.

4. هل تستخدم Node.js REST API؟

Node.js نفسها هي بيئة تشغيل لتنفيذ JavaScript على الجانب الخادم، ولا "تستخدم" REST APIs بمعنى وجود وظائف REST مضمنة. ومع ذلك، يتم استخدام Node.js على نطاق واسع لـ إنشاء REST APIs، بفضل هيكلها غير المحجوز المدفوع بالحدث وتوافر الأطر مثل Express.js، والتي تجعل من السهل بناء وإدارة خدمات الويب RESTful.

5. هل لا يزال الناس يستخدمون Express؟

نعم، لا يزال الناس يستخدمون Express.js على نطاق واسع لتطوير REST APIs وتطبيقات الويب.

6. هل تحل Next.js محل Express؟

Next.js وExpress هما أداتان مختلفتان تخدمان أغراضًا مختلفة في نظام تطوير الويب، ولا تحل واحدة بالضرورة محل الأخرى.

7. هل Node.js جيدة لتطوير API؟

نعم، تعتبر Node.js جيدة جدًا لتطوير API، خاصة لبناء RESTful APIs.

8. ما هي أفضل قاعدة بيانات لـ Node.js API؟

تعتمد "أفضل" قاعدة بيانات لـ API Node.js الخاص بك بشكل كبير على المتطلبات المحددة لمشروعك وتفضيلاتك. تُعد MongoDB شائعة بسبب مرونتها وسهولة دمجها مع Node.js، بينما تُفضل PostgreSQL وMySQL بسبب التناسق القوي وقدرات SQL. تعد SQLite مثالية للتطبيقات المدمجة أو الاستخدامات الأبسط. سيساعد تقييم احتياجات تطبيقك والنظر في هذه العوامل في اختيار قاعدة البيانات الأكثر ملاءمة لـ API Node.js الخاص بك.