🔰 مقدمة بسيطة: ما هو الـ API ولماذا هو مهم؟
تخيل أنك تطلب وجبة من مطعم. أنت لا تدخل المطبخ، بل تطلب من النادل، والنادل يوصل طلبك للطباخ ثم يُرجعه لك. في عالم البرمجة، هذا النادل هو الـ API.
💡 الـ API (Application Programming Interface) هو "الوسيط" الذي يسمح لتطبيقٍ ما (مثل تطبيق الهاتف) أن يتواصل مع تطبيقٍ آخر (مثل الخادم أو السيرفر)، ليطلب منه بيانات أو يرسل له معلومات.
👨💻 مثال سريع:
-
تطبيق الهاتف يطلب المنتجات من السيرفر عبر API.
-
السيرفر يُعيد له البيانات على شكل JSON.
🔨 ما التقنية التي نستخدمها لبناء هذا الـ API؟
يوجد تقنيات كثيرة لبناء APIs، مثل:
-
Node.js (بلغة JavaScript)
-
Laravel (بلغة PHP)
-
Spring Boot (بلغة Java)
-
Django (بلغة Python)
-
✅ ASP.NET Core (بلغة C#) ← وهذه التقنية التي سنستخدمها في هذا المقال
🚀 لماذا اخترنا ASP.NET Core API؟
لأنها تقنية حديثة، قوية، وسريعة من تطوير Microsoft، وتُستخدم في بناء:
-
مواقع إلكترونية احترافية
-
تطبيقات الهاتف
-
أنظمة متكاملة
-
وربط قواعد البيانات بالخدمات
💎 مميزات ASP.NET Core API:
-
مفتوح المصدر وسهل التخصيص
-
أداء عالي جداً
-
حماية متقدمة ودعم شامل
-
مدعوم من مجتمع مطورين ضخم
في هذه المقالة، سنأخذك خطوة بخطوة لفهم الـ API، ثم نبدأ معًا ببناء REST API باستخدام ASP.NET Core، مع أمثلة حقيقية وتطبيق عملي.
✨ هيا نبدأ رحلتنا البرمجية!
الجزء الأول: المقدمة - Introduction
ما هو الـ API ولماذا أصبح حديث كل مطور؟
في عالم البرمجة الحديث، لم يعد بناء تطبيقات سطح المكتب أو صفحات الويب فقط هو الأساس. بل أصبح الربط بين الأنظمة، ومشاركة البيانات بين التطبيقات، وحتى ربط الهاتف بالموقع الإلكتروني أو طرف ثالث مثل PayPal أو Google، يعتمد كليًا على ما يُعرف بـ واجهة برمجة التطبيقات - API (Application Programming Interface).
📌 تعريف عام للـ API:
API هو بوابة تسمح للتطبيقات بالتحدث مع بعضها البعض، عن طريق إرسال واستقبال البيانات وفق بروتوكول معين (عادة HTTP).
🎯 لماذا نحتاج API؟
-
لفصل الواجهة (Frontend) عن المنطق الداخلي (Backend).
-
للسماح للتطبيقات بالتكامل فيما بينها.
-
لإنشاء أنظمة مرنة قابلة للتوسع بسهولة.
-
لتسهيل تطوير تطبيقات الهاتف والويب باستخدام نفس قواعد البيانات.
ما هو REST API؟
عندما نقول API، غالبًا نقصد به نوع معين اسمه RESTful API، وهو نمط تصميم يعتمد على بروتوكول HTTP، ويستخدم العمليات المعروفة:
العملية | الوصف |
---|---|
GET | لجلب البيانات |
POST | لإنشاء بيانات جديدة |
PUT | لتعديل بيانات موجودة |
DELETE | لحذف بيانات |
ASP.NET Core API: منصة مايكروسوفت القوية
ASP.NET Core API هو إطار عمل حديث ومفتوح المصدر من تطوير شركة Microsoft، تم تصميمه لتطوير تطبيقات الويب السريعة، المرنة، والمتوافقة مع أنظمة متعددة (Windows، Linux، macOS). ويتميز بقدرته العالية على التعامل مع REST APIs بشكل آمن واحترافي.
🛠️ ما الذي يجعل ASP.NET Core API مميزًا؟
-
دعم كامل لـ Dependency Injection.
-
أداء فائق وقابلية للتوسع.
-
تكامل سلس مع Entity Framework Core.
-
دعم التحقق والصلاحيات.
-
توثيق مدمج باستخدام Swagger.
-
مجتمع ضخم ومصادر دعم ممتازة.
لمن هذه المقالة؟
إذا كنت:
-
مطورًا مبتدئًا وتريد فهم أساسيات API من الصفر.
-
مطورًا متوسطًا يريد احتراف إنشاء RESTful API باستخدام ASP.NET Core.
-
أو حتى مطورًا متقدمًا يبحث عن تحسين أداء مشروعه القائم.
فهذه المقالة لك. ستأخذك من مستوى المبتدئ إلى الاحتراف، خطوة بخطوة، بكل ما تحتاجه من مفاهيم، أمثلة، صور، ونصائح عملية.
🧩 الجزء الثاني: مفاهيم الـ API و REST
🔍 ما هو الـ API بالتفصيل؟
📘 المعنى الحرفي:
API هو اختصار لـ Application Programming Interface، أي: "واجهة برمجة التطبيقات".
هو ببساطة مجموعة من التعليمات التي تسمح لتطبيق بالتفاعل مع تطبيق آخر من خلال مجموعة من القواعد والبروتوكولات.
🧱 أنواع الـ APIs
النوع | الوصف |
---|---|
Web API | واجهة برمجة تطبيقات عبر الإنترنت (مثل REST API) |
Library API | واجهات ضمن مكتبات برمجية مثل Math , System.IO |
Operating System API | واجهات تقدمها نظم التشغيل مثل Windows API |
Hardware API | للتفاعل مع أجهزة مثل الكاميرا أو الطابعة |
لكن في هذه المقالة، تركيزنا على النوع الأول: Web API وخاصة باستخدام ASP.NET Core.
🌐 REST API: الأساس العملي لبناء الـ Web APIs
✅ ما هو REST؟
REST هو اختصار لـ: Representational State Transfer
وهو نمط معماري (Architectural Style) لتصميم الـ APIs، يعتمد على استخدام بروتوكول HTTP والموارد Resources.
🧠 المبادئ الأساسية في REST:
-
Stateless: لا يحتفظ السيرفر بأي حالة بين الطلبات.
-
Client-Server: فصل بين الواجهة والبيانات.
-
Cacheable: يمكن تخزين بعض الاستجابات لتحسين الأداء.
-
Uniform Interface: الواجهة موحدة ومعروفة (نستخدم HTTP verbs مع عناوين URL).
✉️ الـ HTTP Verbs الرئيسية:
Verb | الوظيفة | مثال عملي |
---|---|---|
GET | جلب بيانات | GET /api/products ← جلب كل المنتجات |
POST | إنشاء | POST /api/products ← إنشاء منتج جديد |
PUT | تحديث | PUT /api/products/1 ← تحديث منتج معين |
DELETE | حذف | DELETE /api/products/1 ← حذف المنتج |
📁 ماذا نعني بـ Resource؟
في REST، كل شيء هو Resource (مورد) وله URI (رابط فريد):
🧩 ما هي الاستجابة Response؟
عند استخدام API، فإن السيرفر يرد باستجابة (عادة بصيغة JSON) تحتوي على:
-
البيانات المطلوبة.
-
حالة HTTP (200, 201, 404, 500...)
-
أحيانًا رأس الطلب Headers مثل Content-Type أو Authorization.
مثال على رد JSON:
📦 Content-Type:
يُستخدم لتحديد نوع البيانات بين الخادم والعميل. أهم القيم:
-
application/json
→ الأكثر استخدامًا. -
application/xml
→ للأنظمة القديمة. -
text/plain
→ نص عادي.
🎯 ما الفرق بين REST و SOAP؟
المقارنة | REST | SOAP |
---|---|---|
البنية | خفيف ومرن | ثقيل ومعقد |
البيانات | JSON أو XML | XML فقط |
الأداء | أسرع وأخف | أبطأ |
التوافق | سهل مع مختلف الأنظمة | معقد |
الاستخدام | الأكثر شيوعًا اليوم | يستخدم في أنظمة قديمة أو مالية |
🛡️ هل REST آمن؟
REST بنفسه لا يحتوي على طبقة أمان، ولكن يمكن استخدام HTTPS + Token Authentication (مثل JWT) لتأمينه.
🚧 مثال حقيقي على REST API
تخيل متجر إلكتروني يقدم API يسمح لتطبيق الهاتف بعرض المنتجات:
طلب:
رد:
بهذا نكون انتهينا من الجزء الثاني.
الجزء القادم سيكون بعنوان:
🧩 الجزء الثالث: ما هو ASP.NET Core API؟ ولماذا نستخدمه؟
🔸 ما هو ASP.NET Core ولماذا يعتبر نقلة نوعية؟
🔸 الفرق بين Web App و Web API في .NET
🔸 آلية العمل خلف الكواليس
🔸 نظرة على البنية الأساسية للمشروع
🔸 ما هو ASP.NET Core ولماذا يعتبر نقلة نوعية؟
ASP.NET Core هو الإصدار المطور من ASP.NET التقليدي، وهو إطار عمل مفتوح المصدر من Microsoft لبناء تطبيقات الويب الحديثة عالية الأداء، عبر أنظمة تشغيل متعددة مثل Windows وLinux وmacOS.
✅ مزاياه الرئيسية:
-
💨 أداء عالٍ جدًا مقارنة بالإصدارات القديمة.
-
🌍 متعدد المنصات: يشتغل على Windows, Linux, macOS.
-
🧱 قابل للتوسع والتعديل بسهولة.
-
🔐 دعم مدمج للأمان والمصادقة.
-
🧪 اختبارات ودعم ممتاز للـ Testing.
-
♻️ يدعم الـ Dependency Injection افتراضيًا.
🔸 الفرق بين Web App و Web API في .NET
المقارنة | Web App | Web API |
---|---|---|
الهدف | واجهة رسومية للمستخدم (صفحات) | تبادل البيانات بين الأنظمة |
الإخراج | HTML, CSS, JavaScript | JSON أو XML |
الاستخدام | مواقع إنترنت، لوحات تحكم | تطبيقات الهاتف، تطبيقات خارجية، SPA |
التحكم | Controllers مع Views | Controllers فقط بدون Views |
🔸 آلية العمل خلف الكواليس
عند استدعاء API في ASP.NET Core، ما الذي يحدث؟
-
🔗 العميل يرسل طلب HTTP (مثلاً: GET /api/products).
-
🧠 الراوتر يحدد الـ Controller المناسب (مثلاً:
ProductsController
). -
📦 ينفذ ASP.NET Core Middleware سلسلة من المعالجات (middlewares) مثل المصادقة، التحقق، إلخ.
-
🧱 يُنفذ المنطق المطلوب (مثل قراءة البيانات من قاعدة البيانات باستخدام EF Core).
-
📨 يرسل النتيجة للعميل بصيغة JSON مع كود الحالة المناسب.
🔧 نظرة على البنية الأساسية لمشروع API في ASP.NET Core
عند إنشاء مشروع Web API جديد، عادة ما تحتوي البنية الأساسية على:
🎯 مثال عملي:
🔍 الشرح:
-
Route("api/[controller]")
: يُترجم إلىapi/products
. -
ControllerBase
: يُستخدم مع API فقط (بدون Views). -
AppDbContext
: يمثل الاتصال بقاعدة البيانات باستخدام Entity Framework.
🧠 لماذا نستخدم ASP.NET Core API؟
-
لأنه قوي ومرن في التعامل مع REST.
-
يسهل التعامل مع قواعد البيانات باستخدام EF Core.
-
متكامل مع نظام الهوية (Identity) والمصادقة (Authentication).
-
موثق بسهولة باستخدام Swagger.
-
يتيح بناء مشاريع قابلة للتوسيع والنشر بسهولة على Azure أو سيرفرات أخرى.
;