التحضيرات لإنشاء RestController
رسالة إلى المتعلمين
قبل البدء في التمرين العملي لإنشاء RestController، من الضروري أن تأخذ الوقت الكافي لقراءة هذا القسم جيدًا. ليس الوقت الآن للبرمجة، بل للتحضير وفهم النظرية وراء ما سنقوم به.
1. ما هو خدمة الويب؟
خدمة الويب هي مكون برمجي يسمح للتطبيقات بالتواصل فيما بينها عبر شبكة. تعرض وظائف أو بيانات يمكن لتطبيقات أخرى استهلاكها بإرسال طلبات HTTP واستقبال الردود.
بنية العميل-الخادم
تدفق الاتصال
2. التعليقات التوضيحية في Spring Boot
التعليقات التوضيحية هي بيانات وصفية نضيفها إلى الكود لتحديد كيفية تصرف بعض الأجزاء. تسمح لـ Spring Boot بتكوين تطبيقك تلقائيًا.
التعليقات التوضيحية الرئيسية
| التعليق التوضيحي | الدور | مثال |
|---|---|---|
@RestController | يشير إلى أن الفئة هي وحدة تحكم REST التي تدير طلبات HTTP وتعيد الردود بتنسيق JSON أو XML | @RestController public class CardController |
@RequestMapping | يربط عنوان URL الأساسي بفئة أو طريقة | @RequestMapping("/cards") |
@GetMapping | يحدد أن الطريقة تستجيب لطلبات HTTP GET | @GetMapping("/hello") |
@PostMapping | يحدد أن الطريقة تستجيب لطلبات HTTP POST | @PostMapping("/create") |
@PutMapping | يحدد أن الطريقة تستجيب لطلبات HTTP PUT | @PutMapping("/update") |
@DeleteMapping | يحدد أن الطريقة تستجيب لطلبات HTTP DELETE | @DeleteMapping("/delete") |
تسلسل التعليقات التوضيحية
3. النموذج (Model) ووحدة التحكم (Controller)
النموذج
النموذج هو فئة Java تمثل كيان عمل. يحتوي على السمات والأساليب لإدارة البيانات.
مثال: نموذج Card
الكود Java المقابل:
public class Card {
private int cardId;
private int customerId;
private String cardNumber;
private String cardType;
private int totalLimit;
private int amountUsed;
private int availableAmount;
private String createDt;
// Getters et Setters
}
وحدة التحكم
وحدة التحكم هي فئة تدير الطلبات HTTP الواردة وتعيد الردود. تربط بين العميل ومنطق العمل.
مثال: وحدة التحكم CardController
الكود Java المقابل:
@RestController
@RequestMapping("/cards")
public class CardController {
@GetMapping("/hello")
public String helloCard() {
return "Hello, Card!";
}
@GetMapping("/{id}")
public Card getCard(@PathVariable int id) {
// منطق لاسترجاع بطاقة
}
@PostMapping
public Card createCard(@RequestBody Card card) {
// منطق لإنشاء بطاقة
}
}
بنية MVC مع Spring Boot
4. المتطلبات التقنية
قبل البدء في التمرين العملي، تأكد من أن بيئة التطوير الخاصة بك مهيأة بشكل صحيح.
التحقق من الأدوات
1. Java Development Kit (JDK)
الإصدار المطلوب: Java 17 أو أعلى
التحقق:
java -version
النتيجة المتوقعة:
java version "17.0.x" أو أعلى
2. Apache Maven
الإصدار المطلوب: Maven 3.9 أو أعلى (موصى به للاستقرار)
التحقق:
mvn -version
النتيجة المتوقعة:
Apache Maven 3.9.x أو أعلى
Java version: 17.x.x
ملاحظة: يوفر Maven 3.9+ استقرارًا وتوافقًا أفضل مع Java 17+.
3. Visual Studio Code
الإضافات المطلوبة:
- Extension Pack for Java
- Spring Boot Extension Pack
مخطط بيئة التطوير
5. خطة التمرين العملي
الهدف
تعلم كيفية إنشاء وحدة تحكم REST لإدارة طلبات HTTP بإنشاء تطبيق Spring Boot كامل.
خطوات التمرين
تفاصيل الخطوات
الخطوة 1: تكوين المشروع
استخدام Spring Initializr لإنشاء مشروع Spring Boot مع:
- المشروع: Maven
- اللغة: Java
- إصدار Spring Boot: 3.x
- التبعيات: Spring Web, Spring Boot DevTools
الخطوة 2: إنشاء النموذج
إنشاء فئة Card في الحزمة model مع السمات اللازمة.
الخطوة 3: إنشاء وحدة التحكم
إنشاء فئة CardController في الحزمة controller مع:
- التعليق التوضيحي
@RestController - التعليق التوضيحي
@RequestMapping("/cards") - طرق مع
@GetMapping,@PostMapping, إلخ.
الخطوة 4: التجميع والتشغيل باستخدام Maven
أوامر Maven الأساسية:
الخيار 1: أوامر منفصلة
# تنظيف المشروع
mvn clean
# تجميع وتثبيت (بدون اختبارات)
mvn install -DskipTests
# تشغيل التطبيق
mvn spring-boot:run
الخيار 2: أمر مجمع (موصى به)
# كل شيء في أمر واحد
mvn clean install -DskipTests spring-boot:run
شرح الأوامر:
mvn clean: يحذف الملفات المجمعة السابقةmvn install: يجمع المشروع وينشئ ملف JAR-DskipTests: يتجاهل تنفيذ الاختبارات (أسرع للتطوير)spring-boot:run: يشغل التطبيق Spring Boot
ملاحظة: الأمر المجمع أكثر فعالية لأنه ينفذ الدورة الكاملة في مرة واحدة.
الخطوة 6: الاختبار
اختبار النقاط النهائية:
http://localhost:8080/cards/hello- استخدام Postman لاختبار الطرق الأخرى
6. هيكل مشروع Spring Boot
7. دورة حياة طلب HTTP
المفاهيم الرئيسية التي يجب تذكرها
1. فصل المسؤوليات
2. التعليقات التوضيحية في Spring Boot
- @RestController = @Controller + @ResponseBody (يعيد تلقائيًا JSON)
- @RequestMapping يحدد المسار الأساسي
- @GetMapping/@PostMapping/@PutMapping/@DeleteMapping تتوافق مع طرق HTTP
3. تنسيق الرد
بشكل افتراضي، يقوم Spring Boot بتحويل الكائنات Java تلقائيًا إلى JSON بفضل Jackson.
الخاتمة
قدمت لك هذه القراءة التحضيرية:
- فهم لخدمات الويب وكيفية عملها
- معرفة بالتعليقات التوضيحية الأساسية في Spring Boot
- التمييز بين النموذج ووحدة التحكم
- المتطلبات التقنية اللازمة
- نظرة عامة على خطة التمرين العملي
أنت الآن جاهز للانتقال إلى التمرين العملي حيث ستقوم بإنشاء أول RestController لك!
مهم: إذا كان هناك شيء غير واضح، لا تتردد في إعادة قراءة هذا القسم أو طرح الأسئلة. الفهم النظري الجيد سيسهل بشكل كبير الممارسة.