Prerequisites
علشان تقدر تبدأ في السلسلة دي، لازم تكون فاهم شوية حاجات مهمة، زي:
- الـC#: لازم تكون فاهم كويس لغة C# لأنها الأساس في كتابة الكود.
- الـSQL Server: علشان تعرف تتعامل مع الداتا بيز وكتابة استعلامات SQL.
- الـLINQ: دي طريقة التعامل مع الداتا داخل C#.
- الـEntity Framework Core: علشان التعامل مع قواعد البيانات يكون سهل ومرن.
- الـDesign Patterns: لو فاهم شوية باترنز زي Singleton وDependency Injection ده هيكون إضافة قوية.
ASP.NET Core
الـASP.NET Core هو فريم وورك مفتوح المصدر من مايكروسوفت، اتبنى من أول وجديد كليًا ليكون Cross-Platform، يعني بيشتغل على أنظمة تشغيل مختلفة زي Windows، MacOS، وLinux. ده بيفرقه عن ASP.NET القديم اللي كان بيشتغل بس على Windows. وهو معمولها Re-design كامل فالكود مختلف فالإتنين
أهم مميزات ASP.NET Core:
- Open Source: كود مفتوح المصدر تقدر تشوفه وتعدل عليه.
- Cross-Platform: شغال على كل أنظمة التشغيل الكبيرة.
- High Performance: الأداء بتاعه سريع جدًا مقارنة بفريم ووركس تانية.
API (Application Programming Interface)
كلمة API هتسمعها كتير في تطوير الويب، ومش معناها بس Web Services. أي طريقة بتخلي اتنين software يتواصلوا مع بعض هي API. في الويب، بنستخدم الـ API علشان نخلي الفرونت اند (زي الموقع اللي بيشوفه المستخدم) يتواصل مع الباك اند (الجزء اللي بيعمل العمليات). API should:
- Be stateless (الريكويست اللي جاي بعده ملوش علاقة باللي قبله - مفيش واحد معتمد عالتاني)
- Respect HTTP methods
- Respect HTTP standard status codes
بص يا سيدي، الـ Web API لها أنواع كتير، لكن الأكثر شيوعًا هو اللي اسمه REST API، وفي أنواع تانية.
HTTP and Request
1. Scheme (البروتوكول)
ده بيوضح نوع الاتصال اللي بيتم بين الكلاينت (زي المتصفح) والسيرفر. أشهر الأمثلة:
- HTTP: اتصال عادي.
- HTTPS: نفس البروتوكول بس فيه تشفير علشان يحمي البيانات.
2. Host (المضيف)
ده هو اسم الدومين أو الـ IP اللي بيوجه الطلب للسيرفر. في المثال عندنا:
www.myapp.com
ده بيوضح إن الطلب رايح لسيرفر عليه التطبيق اللي اسمه myapp
.
كنا اتكلمنا على الطريقة بالظبط في التحويل في DNS
3. Path (المسار)
ده المسار اللي بيوضح إنت عايز توصل لفين داخل السيرفر. هنا المسار هو:
/api/data
يعني إحنا بنطلب الوصول ل (resource) داخل /api
وتحديدًا داخل /data
.
4. Query String (سلسلة الاستعلامات)
دي عبارة عن باراميترات بنبعتها مع الطلب علشان نحدد معلومات إضافية.
بيبدأ دايمًا بـ ?
، وكل باراميتر بيتكتب بشكل key=value
.
في المثال عندنا:
q=Abc123&date=2000-01-01
يعني بنبعت قيمتين:
- q = “Abc123”
- date = “2000-01-01”
5. Request Method (طريقة الطلب)
الطريقة اللي بنحدد بيها نوع العملية اللي عايزين نعملها على السيرفر. أمثلة:
- GET: لجلب بيانات.
- POST: لإرسال بيانات جديدة.
- PUT: لتعديل بيانات.
- DELETE: لحذف بيانات.
6. Request Headers (الترويسات)
الترويسات بتضيف معلومات إضافية زي:
- الـAuthorization: عشان تبعت توكن مصادقة.
- الـContent-Type: بتحدد نوع البيانات اللي بعتها (مثلاً:
application/json
).
7. Request Body (جسم الطلب)
ده الجزء اللي بتحط فيه البيانات الفعلية اللي عايز تبعتها للسيرفر.
غالبًا بيتم استخدامه في طلبات POST أو PUT.
مثال على الـ Body:
{
"name": "Ahmed",
"email": "ahmed@example.com",
"password": "123456"
}
ملخص
- الـScheme: هو طريقة الاتصال، وهنا هو HTTPS.
- الـHost: هو
www.myapp.com
. - الـPath: هو
/api/data
. - الـQuery String: بيحتوي على
q=Abc123&date=2000-01-01
. - الـRequest Method: بيحدد نوع العملية (زي GET أو POST).
- الـHeaders: بتحتوي على معلومات إضافية (زي Content-Type وAuthorization).
- الـBody: بيحمل البيانات اللي بتتبعت للسيرفر مع الطلب.
Status Codes
HTTP response status codes لما تبعت Request من الكلاينت للسيرفر، السيرفر بيرجع لك Status Code علشان يقولك إيه اللي حصل:
- 200-299: Successful response:
- 200 OK: الريكوست نجح.
- 201 Created: تم إنشاء حاجة جديدة.
- 300-399: Redirection (With HTML pages)
- 400-499: Client errors:
- 400 Bad Request: الريكوست كان فيه حاجة غلط.
- 401 Unauthorized: مش مسموح ليك تنفذ الريكوست.
- 404 Not Found: اللي بتدور عليه مش موجود.
- 500-599: Server errors:
- 500 Internal Server Error: مشكلة في السيرفر.
JSON (JavaScript Object Notation)
الجيسون هو الفورمات اللي بنستخدمه علشان نبعت البيانات بين الكلاينت والسيرفر. هو فورمات بسيط وخفيف ومعروف عالمياً، وبيسهل تبادل البيانات.
مثال على شكل الجيسون:
{
"person": {
"id": 1,
"name": "Ahmed",
"birthDate": "1990-01-01",
"address": {
"city": "Cairo",
"street": "Tahrir Square"
}
}
}
Developer Tools
لو عايز تشوف الريكوستات والريسبونسات اللي بتحصل على المتصفح، تقدر تستخدم الـ Developer Tools.
افتحها بالضغط على F12
وشوف الـ Network tab.
هنا هتقدر تشوف كل الريكوستات اللي اتبعتت والـ Status Codes اللي رجعت بيها.