Apidog

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

تصميم API

توثيق API

تصحيح أخطاء API

محاكاة API

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

كيفية التفاعل مع واجهة برمجة تطبيقات جيثب برمجيًا: دليل لمطور Node.js

تعرّف على كيفية استغلال قوة واجهة برمجة التطبيقات الخاصة بـ GitHub باستخدام Node.js و Express! سترشدك هذه الدليل إلى إعداد خادم Express، وإنشاء مسارات لاسترداد ملفات تعريف مستخدمي GitHub والمستودعات، وإجراء طلبات مصدقة بسهولة.

Amir Hassan

Amir Hassan

Updated on نوفمبر 29, 2024

GitHub هي منصة أساسية للمطورين حول العالم، تقدم مساحة للتعاون ومشاركة الكود وإدارة الإصدارات. بينما توفر واجهة الويب في GitHub وظيفة قوية، هناك العديد من السيناريوهات حيث قد ترغب في التفاعل مع GitHub برمجيًا. هنا يأتي دور واجهة برمجة التطبيقات GitHub API.

تسمح واجهة برمجة التطبيقات GitHub للمطورين بأتمتة سير العمل، واسترجاع البيانات، ودمج ميزات GitHub القوية مباشرة في تطبيقاتهم. سواء كنت تبحث عن استرجاع معلومات المستخدم، أو قائمة بالمستودعات، أو إدارة المشاكل وسحب الطلبات، فإن واجهة برمجة التطبيقات GitHub توفر طريقة مرنة وكفء للتفاعل مع GitHub برمجيًا، وفي هذا الدليل، سنتعلم كيفية استخدامها!

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

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

1. معرفة أساسية بـ JavaScript وNode.js

لاستخدام واجهة برمجة التطبيقات GitHub مع Node.js بشكل فعال، يجب أن يكون لديك فهم أساسي لـ JavaScript، خاصة برمجة غير المتزامنة والوعود، حيث تُستخدم هذه المفاهيم بشكل متكرر عند إجراء طلبات HTTP. المعرفة بـ Node.js، بما في ذلك إعداد مشروع وتثبيت التبعيات، ضرورية أيضًا.

2. حساب GitHub

تحتاج إلى حساب GitHub للوصول إلى واجهة برمجة التطبيقات GitHub. إذا لم يكن لديك واحد، يمكنك التسجيل مجانًا في GitHub. بالإضافة إلى ذلك، ستحتاج إلى إنشاء رمز وصول شخصي لتوثيق طلباتك. سنغطي كيفية生成 هذا الرمز في قسم لاحق.

3. تثبيت Node.js على نظامك

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

4. فهم أساسي لـ RESTful APIs

نظرًا لأن واجهة برمجة التطبيقات GitHub هي RESTful API، فإن وجود فهم أساسي لكيفية عمل REST APIs سيكون مفيدًا. ويشمل ذلك فهم طرق HTTP (GET، POST، PUT، DELETE)، رموز الحالة، وكيفية معالجة استجابات JSON.

5. محرر كود

سيساعدك محرر الكود أو بيئة التطوير المتكاملة (IDE) مثل Visual Studio Code، أو Sublime Text، أو Atom في كتابة وإدارة كودك بشكل فعال. أي محرر كود تشعر بالراحة في استخدامه سيكون مناسبًا لهذا البرنامج التعليمي.

إعداد بيئتك

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

الخطوة 1: تثبيت Node.js

إذا لم تكن قد قمت بتثبيت Node.js بعد، قم بتنزيل أحدث إصدار من الموقع الرسمي لـ Node.js. اتبع تعليمات التثبيت الخاصة بنظام التشغيل الخاص بك. للتحقق من أن Node.js مثبت بشكل صحيح، افتح الطرفية الخاصة بك أو موجه الأوامر وأدخل:

node -v

يجب أن تعرض هذه الأوامر رقم الإصدار من Node.js المثبت على جهازك.

الخطوة 2: تهيئة مشروع Node.js جديد

بعد ذلك، سنقوم بإنشاء دليل جديد لمشروعنا وتهيئته باستخدام npm (مدير حزم Node). افتح الطرفية الخاصة بك وأدخل الأوامر التالية:

mkdir github-api-tutorial
cd github-api-tutorial
npm init -y

تنشئ الأمر npm init -y ملف package.json مع الإعدادات الافتراضية، والتي ضرورية لإدارة تبعيات المشروع.

الخطوة 3: تثبيت المكتبات المطلوبة

للتفاعل مع واجهة برمجة التطبيقات GitHub، نحتاج كل من express ومكتبة عميل HTTP. في هذا البرنامج التعليمي، سنستخدم axios، عميل HTTP المعتمد على الوعود لـ Node.js. قم بتثبيت axios عن طريق إدخال:

npm install express axios

بالإضافة إلى ذلك، قد نحتاج إلى dotenv لإدارة متغيرات البيئة بشكل آمن. يسمح لنا هذا الحزمة بتحميل متغيرات البيئة من ملف .env إلى process.env، وهو مفيد لتخزين المعلومات الحساسة مثل رموز API. قم بتثبيت dotenv عن طريق إدخال:

npm install dotenv

الخطوة 4: إنشاء ملف .env

قم بإنشاء ملف .env في جذر دليل مشروعك لتخزين رمز الوصول الشخصي الخاص بك على GitHub. يجب ألا يتم تعهد هذا الملف إلى التحكم في الإصدار للحفاظ على معلوماتك الحساسة آمنة.

GITHUB_TOKEN=your_personal_access_token_here

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

الخطوة 5: إعداد هيكل المشروع

قم بإنشاء ملف جديد باسم index.js في الدليل الجذر لمشروعك. سيكون هذا الملف بمثابة نقطة الدخول الرئيسية لتطبيق Node.js الخاص بنا.

يمكنك أيضًا إعداد هيكل مجلد أساسي إذا كنت تخطط لتوسيع مشروعك بشكل أكبر. قد يبدو الهيكل البسيط كما يلي:

github-api-tutorial/
├── node_modules/
├── .env
├── index.js
├── package.json
└── package-lock.json

إنشاء رمز وصول شخصي على GitHub

للوصول إلى النقاط النهائية الموثوقة وزيادة حدود معدل API الخاصة بك، تحتاج إلى رمز وصول شخصي على GitHub. يحتوي GitHub على دليل رائع حول كيفية إنشاء رمز وصول، والذي يمكنك العثور عليه أدناه؛

كما تم توضيح الخطوات أدناه حتى تتمكن من اتباعها بسهولة :)

  1. سجّل دخولك إلى حساب GitHub الخاص بك وانتقل إلى الإعدادات.
  2. في الشريط الجانبي الأيسر، انقر على إعدادات المطور.
  3. انقر على رموز الوصول الشخصية ثم رموز (الكلاسيكية).
  4. انقر على زر إنشاء رمز جديد.
  5. قدم ملاحظة لوصف الغرض من الرمز (على سبيل المثال، "دليل واجهة برمجة التطبيقات GitHub").
  6. حدد النطاقات أو الأذونات التي ترغب في منحها لهذا الرمز. لهذا البرنامج التعليمي، حدد repo (للوصول إلى المستودعات) وuser (للوصول إلى معلومات المستخدم). يمكنك ضبط النطاقات بناءً على احتياجاتك الخاصة.
  7. انقر على إنشاء رمز.
  8. انسخ الرمز المنشأ واحتفظ به في ملف .env كما هو موضح سابقًا. ملاحظة: عامل هذا الرمز مثل كلمة مرور ولا تشاركه علنًا أبدًا.

إعداد تطبيق Express مع مسارات لطلبات واجهة برمجة التطبيقات GitHub

لنقم بإنشاء خادم Express أساسي مع مسارين: واحد لجلب ملف تعريف مستخدم GitHub وآخر لجلب مستودعاتهم.

إليك كيف يمكن أن يبدو ملف index.js الخاص بك:

// استيراد الوحدات المطلوبة
require('dotenv').config();
const express = require('express');
const axios = require('axios');

const app = express();

// Middleware لتحليل البيانات بتنسيق JSON وURL-encoded
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// مسار لجلب ملف تعريف مستخدم GitHub
app.get('/user/profile', async (req, res) => {
    try {
        const response = await axios.get('https://api.github.com/user', {
            headers: {
                'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
            }
        });
        res.json(response.data);  // إرسال بيانات ملف تعريف المستخدم كرد JSON
    } catch (error) {
        res.status(500).json({ error: 'خطأ في جلب ملف تعريف المستخدم', details: error.message });
    }
});

// مسار لجلب مستودعات مستخدم GitHub
app.get('/user/repos', async (req, res) => {
    const username = req.query.username || 'irorochad'; // افتراضي إلى 'irorochad' إذا لم يتم تقديم اسم مستخدم
    try {
        const response = await axios.get(`https://api.github.com/users/${username}/repos`, {
            headers: {
                'Authorization': `Bearer ${process.env.GITHUB_TOKEN}`
            }
        });
        res.json(response.data);  // إرسال بيانات مستودعات المستخدم كرد JSON
    } catch (error) {
        res.status(500).json({ error: 'خطأ في جلب مستودعات المستخدم', details: error.message });
    }
});

// بدء تشغيل الخادم
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`الخادم يعمل على http://localhost:${PORT}`);
});
يمكنك حتى اعتبار استخدام المتحكمات لجعل الكود أكثر وضوحًا.

شرح الكود:

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

  • نقوم باستيراد dotenv لتحميل متغيرات البيئة من ملف .env، وexpress لإنشاء الخادم، وaxios لإجراء طلبات HTTP إلى واجهة برمجة التطبيقات GitHub.

تكوين Middleware:

  • تستخدم middleware express.json() وexpress.urlencoded() لتحليل الطلبات الواردة مع الحمولة بتنسيق JSON والبيانات المشفرة في عنوان URL، على التوالي.

إنشاء مسارات:

  • GET /user/profile: يجلب هذا المسار ملف تعريف مستخدم GitHub الموثق باستخدام مكتبة axios. يتم إرجاع بيانات الملف الشخصي كرد JSON.
  • GET /user/repos: يجلب هذا المسار المستودعات العامة لمستخدم GitHub محدد. يتم توفير اسم المستخدم كمعامل استعلام (على سبيل المثال، /user/repos?username=irorochad). إذا لم يتم تحديد اسم مستخدم، فإنه يعود إلى 'irorochad'.

معالجة الأخطاء:

  • إذا حدث خطأ أثناء طلب API، يستجيب الخادم برمز حالة 500 وكائن JSON يحتوي على تفاصيل الخطأ.

بدء تشغيل الخادم:

  • يستمع الخادم على منفذ محدد (يفترض أنه 3000 إذا لم يتم تعيينه في البيئة) ويسجل رسالة عند البدء.

3. تحديث ملف .env

تأكد من أن ملف .env الخاص بك يحتوي على ما يلي:

GITHUB_TOKEN=your_personal_access_token_here
PORT=3000

استبدل your_personal_access_token_here برمز الوصول الشخصي الفعلي الخاص بك على GitHub.

4. تشغيل تطبيقك

لتشغيل تطبيق Express الخاص بك، استخدم الأمر التالي:

node index.js

يجب أن يكون الخادم الخاص بك الآن قيد التشغيل على http://localhost:3000، وحان الوقت لاختبار نقاط النهاية الخاصة بنا!!!

  • جلب ملف تعريف المستخدم: قم بزيارة http://localhost:3000/user/profile للحصول على ملف تعريف المستخدم الموثق.
  • جلب مستودعات المستخدم: قم بزيارة http://localhost:3000/user/repos?username=<GitHubUsername> (استبدل <GitHubUsername> باسم مستخدم GitHub المطلوب) للحصول على مستودعات المستخدم.

اختبار نقاط النهاية لدينا باستخدام Apidog

الصفحة الرئيسية Apidog

Apidog تعزز أمان واجهة برمجة التطبيقات من خلال تقديم وثائق قوية، واختبار تلقائي، ورصد في الوقت الحقيقي. يساعد Apidog أيضًا في الامتثال للمعايير الصناعية مثل GDPR وHIPAA، مما يضمن حماية واجهات برمجة التطبيقات الخاصة بك لبيانات المستخدم بشكل فعال.

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

زر

بمجرد تثبيت Apidog أو النسخة على الويب، يمكنك البدء بإنشاء مشروع جديد وإرسال طلبك الأول.

اختبار نقطة نهاية جلب المستخدم:

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

يمكننا القيام بذلك عن طريق الانتقال إلى قسم المصادقة في صفحة الطلب، وإدخال الرمز في الحقل حيث يلزم كما هو موضح أدناه؛

نقطة نهاية جلب المستخدمين

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

اختبار نقطة نهاية جلب المستودع:

نتائج نقاط نهاية جلب المستودع

تمامًا مثل نقاط نهاية جلب المستخدمين، تحتاج نقطة نهاية جلب المستودع أيضًا إلى رمز وصول لإجراء الاستدعاء.

الاستنتاج

إن دمج واجهة برمجة التطبيقات GitHub مع تطبيق Node.js يفتح آفاقًا واسعة للمطورين الذين يتطلعون إلى أتمتة سير العمل، وتحليل البيانات، أو تحسين تطبيقاتهم باستخدام ميزات GitHub القوية. في هذا الدليل، استعرضنا عملية إعداد خادم Express وإنشاء مسارات لجلب معلومات ملف تعريف المستخدم والمستودعات من GitHub.

باتباع الخطوات الموضحة، أصبح لديك الآن فهم أساسي لكيفية التفاعل مع واجهة برمجة التطبيقات GitHub باستخدام Node.js وExpress. يمكنك بسهولة توسيع هذا بإضافة المزيد من المسارات لاستكشاف نقاط نهاية مختلفة، مثل إدارة المشاكل، وسحب الطلبات، وأكثر.