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

يشير الاختصار REST إلى REpresentational State Transfer ، بينما يرمز اختصار API إلى واجهة برمجة التطبيقات. معًا ، يشيرون إلى واجهة برمجة تطبيقات REST. REST API هي خدمة تنقل الطلبات والاستجابات بين نظامين برمجيين ، على بنية REST.

تبني بنية REST خدمات الويب التي يمكن الوصول إليها من خلال عناوين URL باستخدام أحد أفعال الطلب الأربعة: POST و GET و PUT و DELETE. لذلك ، يمكنك القول أن REST API هو برنامج يتيح لك إنشاء الموارد وقراءتها وتحديثها وحذفها عبر عناوين URL.

يمكنك معرفة كيفية إنشاء واجهة برمجة تطبيقات REST باستخدام Spring Boot.

جارٍ بدء تطبيق Spring Boot

أول شيء يجب عليك فعله هو تعرف على أساسيات الربيع وقم بإعداد تطبيق Spring Boot. ومع ذلك ، ستحتاج إلى تغيير التبعيات. بالإضافة إلى تبعية الويب ، ستحتاج إلى الحصول على تبعية Spring Data Java Persistent API (JPA) ومحرك قاعدة البيانات التي تنوي استخدامها (سيستخدم هذا التطبيق MySQL).

بالنسبة لواجهة برمجة تطبيقات REST هذه ، ستحتاج إلى وحدة تحكم ونموذج ومستودع. لذلك ، سيكون لواجهة برمجة تطبيقات REST بنية الملف التالية:

instagram viewer

إنشاء النموذج

الفئة الأولى التي ستحتاج إلى إنشائها هي نموذج العميل ، الذي يخزن منطق البيانات.

طَرد com.onlineshopaholics.api.model ؛

يستورد جاكرتا. عمود؛
يستورد جاكرتا. كيان؛
يستورد جاكرتا. GeneratedValue؛
يستورد جاكرتا. نوع الجيل
يستورد جاكرتا. بطاقة تعريف؛
يستورد جاكرتا. طاولة؛

@طاولة(الاسم ="عميل")
@كيان
عامفصلعميل{
@بطاقة تعريف
تضمين التغريدة(إستراتيجية = GenerationType. آلي)
خاص معرف صحيح

@عمود(الاسم ="اسم الزبون")
خاص اسم السلسلة

خاص سلسلة البريد الإلكتروني

عام عدد صحيح getId(){
يعود بطاقة تعريف؛
}

عامفارغمعرف(معرف عدد صحيح){
هذا.id = معرف ؛
}

عام خيط getName(){
يعود اسم؛
}

عامفارغاسم مجموعة(اسم السلسلة){
هذا.name = الاسم ؛
}

عام خيط getEmail(){
يعود بريد إلكتروني؛
}

عامفارغتعيين البريد الإلكتروني(سلسلة البريد الإلكتروني){
هذا.email = بريد إلكتروني ؛
}
}

من فئة العملاء أعلاه ، سترى أن كل عميل سيكون لديه معرف واسم وبريد إلكتروني. ستلاحظ أيضًا العديد من التعليقات التوضيحية التي تخدم أغراضًا مختلفة.

  • Entity: تعلن فئة العميل ككيان JPA. هذا يعني أن JPA سيستخدم الحقول الموجودة في الفصل لإنشاء أعمدة في قاعدة بيانات علائقية.
  • Table: يعيّن اسم الجدول الذي سيتم تعيينه لفئة نموذج العميل.
  • Id: يعيّن خاصية تحدد الكيان في قاعدة البيانات بشكل فريد.
  • GeneratedValue وGenerationType: يعملان معًا لتحديد إستراتيجية إنشاء تلقائي للحقل الذي يقترن به. لذلك ، سينشئ حقل المعرف تلقائيًا قيمة فريدة في كل مرة تنشئ فيها عميلًا جديدًا.
  • Column: يعيّن خاصية تقوم بتعيين عمود في قاعدة البيانات. لذلك ، سيتم تعيين خاصية الاسم إلى عمود اسم مخصص في قاعدة البيانات.

إنشاء المستودع

سيسمح لك هذا المستودع بالتفاعل مع بيانات العميل في قاعدة البيانات.

طَرد com.onlineshopaholics.api.repository ؛

يستورد org.springframework.data.repository. مستودع Crud
يستورد com.onlineshopaholics.api.model. عميل؛

عامواجهه المستخدممستودع العميليمتدCrudRepository<عميل, عدد صحيح>{}

يمتد مستودع العميل الربيع CrudRepositoy الواجهة ، وتمريرها فئة نموذج العميل إلى جانب نوع المعرف الفريد للكيان ، عدد صحيح.

توفر واجهة CrudRepository الوصول إلى أكثر من 10 عمليات ، بما في ذلك طرق CRUD العامة التي ستحتاجها لواجهة برمجة تطبيقات REST. لذلك ، نظرًا لأن CrudRepository تحدد بالفعل الطرق التي ستحتاج إليها ، فلا داعي للإعلان عنها صراحةً في واجهة CustomerRepository.

إنشاء وحدة التحكم

تسمح لك وحدة التحكم بتحديث البيانات في قاعدة البيانات الخاصة بك باستخدام النموذج والمستودع.

طَرد com.onlineshopaholics.api.controller ؛

يستورد java.util. خياري؛

يستورد org.springframework.beans.factory.annotation. مزوَّد آليًا
يستورد org.springframework.web.bind.notation. تعليق. DeleteMapping ؛
يستورد org.springframework.web.bind.notation. تعليق. GetMapping ؛
يستورد org.springframework.web.bind.notation. تعليق. مسار متغير
يستورد org.springframework.web.bind.notation. تعليق. رسم الخرائط ؛
يستورد org.springframework.web.bind.notation. تعليق. وضع الخرائط
يستورد org.springframework.web.bind.notation. تعليق. طلب
يستورد org.springframework.web.bind.notation. تعليق. طلب رسم الخرائط ؛
يستورد org.springframework.web.bind.notation. تعليق. طلب
يستورد org.springframework.web.bind.notation. تعليق. الجسد
يستورد org.springframework.web.bind.notation. تعليق. RestController

يستورد com.onlineshopaholics.api.model. عميل؛
يستورد com.onlineshopaholics.api.repository. مستودع العميل

تضمين التغريدة
RequestMapping("/عملاء")
عامفصلCustomerController{
تضمين التغريدة
خاص العميل مستودع العميل المستودع ؛

// إنشاء عميل جديد
تضمين التغريدة("/يضيف")
عام عميل addNewCustomer(RequestBody عميل عميل جديد){
مستخدم الزبون = جديد عميل()؛
user.setName (newCustomer.getName ()) ،
user.setEmail (newCustomer.getEmail ()) ؛
customerRepository.save (المستخدم) ؛
يعود مستخدم؛
}

// عرض جميع العملاء
GetMapping("عرض / الكل")
عامتضمين التغريدةمتوقعةgetAllCustomers(){
يعود customerRepository.findAll () ،
}

// عرض عميل معين
GetMapping("عرض / {id}")
عام خياريgetCustomer(PathVariable معرف عدد صحيح){
يعود customerRepository.findById (معرف) ،
}

// تحديث عميل موجود
تضمين التغريدة("/ تحرير / {id}")
عام خيط تحديث(RequestBody تحديث العميل ،PathVariable Integer id){
يعود customerRepository.findById (معرف)
.map (العميل -> {
customer.setName (updateCustomer.getName ()) ،
customer.setEmail (updateCustomer.getEmail ()) ؛
customerRepository.save (العميل) ؛
يعود"تم تحديث تفاصيل العميل بنجاح!";
}). orElseGet (() -> {
يعود"هذا الزبون غير موجود";
});
}

// حذف العميل
تضمين التغريدة("حذف / {id}")
عام خيط يمسح(PathVariable ("بطاقة تعريف")معرف عدد صحيح) {
customerRepository.deleteById (معرف) ،
يعود"تم حذف العميل بنجاح!";
}
}

تزود وحدة التحكم أعلاه واجهة برمجة تطبيقات REST بعمليات CRUD ، باستخدام خمسة من CrudRepository طرق الواجهة (كل منها مخصص لطريقة معينة). تستخدم وحدة التحكم أيضًا العديد من التعليقات التوضيحية المهمة في الربيع والتي تسمح لها بأداء وظائفها.

  • RestController: يخدم هذا التعليق التوضيحي غرضين. إنه يمثل فئة للاكتشاف عن طريق مسح المكونات. كما يخبر Spring بكتابة القيمة المعادة لجميع العمليات ، في هذه الفئة ، في جسم الاستجابة.
  • RequestMapping: يحدد نمط الطلب الأساسي الذي ستتعامل معه وحدة التحكم. لذلك ، ستتعامل وحدة التحكم هذه مع جميع الطلبات إلى "العملاء".
  • ResponseBody: للسماح لطريقة بإرجاع كيان بأكمله.
  • RequestBody: يسمح لك بتحويل نص الطلب إلى كائن.
  • RequestParam: يسمح لك بعزل خاصية واحدة من كائن.
  • PathVariable: يسمح لك بتعيين قيمة طلب إلى عنصر نائب. يقوم بتعيين المعرف المعطى لطريقة الحذف بقيمة موجودة في قاعدة البيانات.
  • @ PostMapping: يسمح لك بإنشاء الموارد.
  • GetMapping: يسمح لك بقراءة بيانات الموارد.
  • PutMapping: يسمح لك بتحديث الموارد.
  • DeleteMapping: يسمح لك بحذف الموارد.

ربط قاعدة البيانات بتطبيقك

لتوصيل قاعدة بيانات بأي تطبيق Spring ، ستحتاج إلى استخدام application.properties ملف ضمن مجلد الموارد. هذا الملف فارغ في البداية ، لذا يمكنك ملؤه بالخصائص المناسبة لقاعدة البيانات التي تنوي استخدامها. سيستخدم هذا التطبيق قاعدة بيانات MySQL لذا سيحتوي ملف application.properties على البيانات التالية:

spring.jpa.hibernate.ddl-auto = تحديث
spring.jpa.open-in-view = خطأ
spring.datasource.url = jdbc: mysql: // $ {MYSQL_HOST: localhost}: 3306 / onlineshopaholics
spring.datasource.username = الجذر
spring.datasource.password = securepw
spring.datasource.driver-class-name = com.mysql.cj.jdbc. سائق

تُظهر البيانات أعلاه أن هذا التطبيق سيتصل بقاعدة بيانات MySQL تسمى onlineshopaholics ، مع اسم مستخدم "root" و "securepw" ككلمة مرور. خطوتك التالية هي إنشاء قاعدة البيانات وجدول العملاء في MySQL.

إنشاء الطلبات

هناك العديد من الأدوات التي يمكنك استخدامها لاختبار واجهة برمجة تطبيقات REST الخاصة بك. Postman هي أداة اختبار REST API شائعة، ويمكنك استخدامه لاختبار واجهة برمجة التطبيقات البسيطة التي أنشأتها. بعد إنشاء جدول MySQL وتشغيل تطبيق Spring ، يمكنك تشغيل Postman وتجربة أفعال الطلب الأربعة.

طلب POST

سيسمح لك هذا الطلب بإنشاء عملاء جدد باستخدام واجهة برمجة تطبيقات REST. لإكمال هذا الطلب ، ستحتاج إلى الانتقال إلى قسم الرؤوس في طلب المشاركة وإنشاء عنوان جديد (نوع المحتوى). يجب عليك تعيين قيمة هذا العنوان على application / json ، حيث ستنشئ عملاء جددًا باستخدام JSON.

في نص الطلب ، ستحتاج إلى تغيير النوع إلى خام وإدخال JSON. بعد ذلك ، ستحتاج إلى إدخال عنوان URL للنشر:

سيؤدي إرسال الطلب إلى إرجاع الرد التالي:

يمكنك أن ترى أن الطلب كان ناجحًا ، وأن العميل الجديد لديه أيضًا معرف.

طلب الحصول على

الآن بعد أن أصبح لديك عميل ، يمكنك عرضه من خلال طلب الاستلام الذي يعيد جميع العملاء:

أو كل عميل حسب المعرف:

طلب PUT

يمكنك تحديث جانيت بلقب جديد وبريد إلكتروني.

حذف طلب

يمكنك أيضًا حذف جانيت من قاعدة البيانات.

اختبر Spring REST API باستخدام JUnit

باستخدام Spring Boot ، يمكنك اختبار أي تطبيق (بما في ذلك واجهات برمجة تطبيقات REST) ​​باستخدام ملف اختبار Spring. اختبار البرنامج مهم لـ Spring Boot. يستخدم كل تطبيق Spring مهيأ JUnit للاختبار ويسمح لك بإرسال الطلبات إلى REST APIs.