إذا كنت مطور جافا، فمن المحتمل أنك سمعت عن Spring REST و Spring Boot. ولكن ما الفرق بين الاثنين؟ ومتى يجب عليك استخدام أحدهما بدلاً من الآخر؟ في هذا المنشور، سنغوص في هذه الأسئلة وأكثر. لنبدأ!
مقدمة إلى Spring REST
Spring REST، أو Spring MVC REST، هو جزء من إطار Spring الذي يسمح لنا ببناء خدمات الويب RESTful. يتعلق الأمر بالتعامل مع طلبات HTTP والاستجابات، وهو أداة رائعة لإنشاء واجهات برمجة التطبيقات (APIs).
تم بناء Spring REST فوق إطار Spring MVC (نموذج-عرض-تحكم) ويستخدم لبناء خدمات الويب RESTful. يستفيد من معمارية Spring MVC لتعريض موارد HTTP المعتمدة على الوسائط المتعددة.
لماذا تستخدم Spring REST؟
تتبع Spring REST مبادئ الويب، بما في ذلك بنيتها وفوائدها وكل شيء آخر. توفر مجموعة من الميزات مثل الإجراءات المناسبة (GET، POST، PUT، DELETE)، التخزين المؤقت، التوجيه والإعادة، الأمان (التشفير والمصادقة).
بدء الاستخدام مع Spring REST
يمكنك البدء بإنشاء خدمة رواتب بسيطة تدير موظفي شركة. ستقوم بتخزين كائنات الموظفين في قاعدة بيانات والوصول إليها من خلال شيء يسمى JPA. يمكنك استخدام Spring Boot لهذا المثال، لكن Spring التقليدي سيعمل أيضًا بشكل جيد.
Spring Data REST تم بناء Spring Data REST على مشروع Spring Data ويسهل بناء خدمات الويب REST المعتمدة على الوسائط المتعددة التي تتصل بمخازن Spring Data.
المجالات المتقدمة لـ REST بعد فهم الأساسيات، يمكنك الغوص في مجالات أكثر تقدمًا من REST مثل معالجة الأخطاء، التصفح، الاختبار، وتوثيق واجهة برمجة التطبيقات.
عملاء Spring REST توفر Spring REST عملاء مختلفين، بما في ذلك RestClient و RestTemplate و WebClient.
فهم Spring Boot
من ناحية أخرى، Spring Boot هو إطار مصمم لتبسيط البنية التحتية وتطوير تطبيقات Spring. يوفر افتراضيات لتكوين الكود والتعليقات التوضيحية لبدء مشاريع Spring الجديدة في وقت قصير.
Spring Boot هو أداة تجعل تطوير تطبيقات الويب والخدمات الصغيرة باستخدام إطار Spring أسرع وأسهل. إنه توسيع يعتمد على الاتفاقية بدلاً من التكوين لمنصة جافا الربيعية يهدف إلى المساعدة في تقليل مشكلات التكوين أثناء إنشاء تطبيقات قائمة على Spring.

لماذا تستخدم Spring Boot؟
توفر Spring Boot ثلاث قدرات أساسية:
- التكوين التلقائي: يقوم Spring Boot بتهيئة التطبيقات مع الاعتماديات المسبقة حتى لا تحتاج إلى تكوين يدوي.
- نهج مدروس للتكوين: توفر Spring Boot قدرات تكوين تلقائية مدمجة، والتي تقوم تلقائيًا بتكوين كل من إطار Spring الأساسي والحزم التي تقدمها جهات خارجية بناءً على إعداداتك.
- القدرة على إنشاء تطبيقات مستقلة: يسمح لك Spring Boot بإنشاء تطبيقات يمكن "تشغيلها فقط"، مما يعني أنها ستكون مكتفية ذاتيًا ولا تتطلب خادمًا خارجيًا.
بدء الاستخدام مع Spring Boot
يمكنك البدء بإنشاء تطبيق بسيط باستخدام Spring Initializr.
للبدء مع Spring Boot تأكد من أن لديك نسخة صالحة من Java مثبتة. يمكنك التحقق من ذلك عن طريق تشغيل java -version في المحطة لديك. قم بزيارة Spring Initializr، املأ تفاصيل مشروعك، اختر خياراتك، وقم بتنزيل مشروع مضغوط على هيئة ملف zip.
الخطوة 1: بدء مشروع Spring Boot جديد: انتقل إلى start.spring.io لإنشاء مشروع بإطار "ويب". في قسم "الاعتماديات"، ابحث عن وضمّن الاعتماد "ويب"، كما هو موضح في الصورة المقدمة. انقر على زر "توليد"، قم بتنزيل ملف zip، واستخرجه إلى دليل على جهازك المحلي.

الخطوة 2: دمج الكود الخاص بكقم بتشغيل IDE الخاص بك وانتقل إلى ملف DemoApplication.java الموجود في الدليل src/main/java/com/example/demo لمشروعك. قم بتعديل محتوى الملف عن طريق إضافة الطريقة الإضافية والتعليقات التوضيحية الموضحة في الكود أدناه. يمكنك إما كتابته بنفسك أو ببساطة نسخه ولصقه.
COPYpackage com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}
هذا هو الكود الوحيد الضروري لإنشاء خدمة ويب أساسية "Hello World" في Spring Boot.
طريقة hello() التي قمنا بإضافتها مصممة لقبول وسيط من نوع String يسمى "name"، ثم دمج هذه الوسيطة مع كلمة "Hello" في الكود. هذا يعني أنه إذا قمت بتعيين اسمك إلى "أيمي" في الطلب، ستكون الاستجابة هي "Hello Amy".
التعليق التوضيحي @RestController يُعلم Spring أن هذا الكود يمثل نقطة نهاية يجب أن تكون قابلة للوصول عبر الويب. يقوم التعليق @GetMapping("/hello") بتوجيه Spring لاستخدام طريقة hello() الخاصة بنا للاستجابة للطلبات المرسلة إلى العنوان http://localhost:8080/hello. أخيرًا، يُعلم @RequestParam Spring بتوقع قيمة "name" في الطلب، ولكن إذا كانت غائبة، ستتdefault إلى كلمة "World".
الخطوة 3: اختبرها: حان وقت بناء البرنامج وتشغيله. افتح سطر الأوامر (أو المحطة)، انتقل إلى الدليل الذي يحتوي على ملفات مشروعك. يمكن بناء التطبيق وتشغيله عن طريق تنفيذ الأمر التالي:
MacOS/Linux:
COPY./gradlew bootRun
Windows:
COPY.\gradlew.bat bootRun
يجب أن ترى مخرجات تشبه إلى حد بعيد ما يلي:

تحقق من localhost:8080 لمعرفة حالة الخادم.

تذكر أن Spring Boot هو أداة قوية تسريع تطوير التطبيقات القائمة على Spring، مما يقلل من تعقيد التكوين والإعداد.
Spring REST مقابل Spring Boot
إذًا، ما الفرق؟ حسنًا، بينما يركز Spring REST على توفير خدمات RESTful، فإن Spring Boot يتمحور حول تسهيل إنشاء تطبيقات Spring.
كل من Spring REST و Spring Boot هما جزء من نظام Spring البيئي ويمكن استخدامهما لإنشاء تطبيقات ويب وخدمات RESTful. ومع ذلك، فإن لهما أغراضًا مختلفة ولديهما بعض الاختلافات الرئيسية:
Spring REST:
- Spring REST هو جزء من إطار Spring الذي يوفر الدعم لبناء خدمات الويب التي تتبع نمط هندسة تمثيل حالة النقل (REST).
- ملائم عندما تريد بناء خدمات RESTful وتود السيطرة على التكوين.
- يتم استخدام Spring REST غالبًا عندما تكون بالفعل تعمل ضمن نظام Spring البيئي وتريد الكشف عن بعض طرق خدمتك كواجهات برمجة تطبيقات RESTful.
Spring Boot:
- من ناحية أخرى، يعد Spring Boot توسيعًا لإطار Spring الذي يبسط عملية إنشاء التطبيقات المستقلة ذات الجودة الإنتاجية.
- يوفر "بدء التشغيل" اعتمادات، وهي مجموعة من موصوفات الاعتماد الملائمة التي يمكنك تضمينها في تطبيقك، وتكوين تلقائي، وهي ميزة لتكوين تطبيق Spring الخاص بك تلقائيًا بناءً على الاعتماديات jar التي أضفتها.
- يعتبر Spring Boot مفيدًا بشكل خاص عندما تريد بدء مشروع جديد أو خدمة صغيرة بسرعة.
- كما أنه خيار جيد عندما ترغب في تطوير تطبيق تفاعلي غير محجوز وتستخدم Spring WebFlux.
ليس الأمر على أساس الخيار أو عدمه - في الواقع، يمكنك استخدام Spring Boot و Spring REST معًا!
متى تستخدم Spring REST أو Spring Boot
إذا كنت ترغب في مزيد من السيطرة على تكوينك، وترتاح للتعامل مع تعقيد Spring، وتبني خدمة ويب وتريد التعامل مع طلبات HTTP والاستجابات، فإن Spring REST قد يكون خيارًا جيدًا. من ناحية أخرى، إذا كنت تريد بسرعة بدء مشروع جديد مع الحد الأدنى من التكوين، فإن Spring Boot سيكون أكثر ملاءمة.
كما أنه يجدر بالذكر أن هذين الخيارين ليسا متعارضين، وغالبًا ما يتم استخدامهما معًا في نفس التطبيق. على سبيل المثال، يمكنك استخدام Spring Boot لإعداد تطبيق جديد بسرعة ثم استخدام Spring REST لكشف بعض طرق الخدمة لديك كواجهات برمجة التطبيقات RESTful.
اختبار واجهات برمجة التطبيقات Spring
Apidog هي منصة متكاملة لتصميم الواجهات، وتصحيح الأخطاء، والتطوير، والمحاكاة، والاختبار. إنها مجموعة كاملة من الأدوات التي تربط دورة حياة الواجهة بالكامل، مما يساعد فرق البحث والتطوير على تنفيذ أفضل الممارسات لتطوير الواجهة في التصميم أولاً.
يجمع Apidog وظائف Postman و Swagger Editor و Swagger UI و Stoplight و ReadMe و JMeter و SoapUI و Mock في منصة واحدة. هذا يسمح بتطوير فعال للواجهات ويضمن عدم تكرار أي مهمة بلا داع. إنه محبوب من قبل المطورين في جميع أنحاء العالم لتبسيط عملية بناء واختبار واجهات برمجة التطبيقات.
الخطوة 1: افتح Apidog وأنشئ طلبًا جديدًا.
- ابدأ Apidog واختر طلب جديد

الخطوة 2: أدخل واجهة برمجة التطبيقات
- اعثر على تفاصيل واجهة برمجة التطبيقات الخاصة بطلب POST الذي تريد إنشاؤه أو أدخلها يدويًا.

الخطوة 3: إدخال المعلمات
- املأ المعلمات المطلوبة وأي بيانات ترغب في تضمينها في جسم الطلب.

استخدام Apidog يمكن أن يوفر لك الوقت والجهد عند العمل مع واجهات برمجة التطبيقات.
الخاتمة
كل من Spring REST و Spring Boot لهما نقاط قوتهما وحالات استخدامهما الخاصة. يمكن حتى استخدامهما معًا لإنشاء تطبيقات قوية وفعالة. لذا، في المرة القادمة التي تبدأ فيها مشروعًا جديدًا، فكّر في الأداة المناسبة لك.
