كيفية إنشاء واجهة برمجة تطبيقات PHP Rest المتقدمة

https://davisonpro.dev

لقد أطلقت للتو DavisonPro.dev. مدونة مستقلة حيث أكتب عن جافا سكريبت وتطوير الويب وتطوير البرمجيات.

سنقوم بإنشاء نسخة متقدمة من كيفية إنشاء واجهة برمجة تطبيقات بسيطة REST في PHP؟ دليل خطوة بخطوة! بواسطة Codeofaninja.com.

هذه طريقة متقدمة لهيكل api وكل ما سنفعله في هذه المقالة هو استعراض الملفات الرئيسية في هذا المشروع.

قم بتنزيل الكود المصدري لهذا المشروع المتاح على جيثب.

يحتوي المشروع على الكثير من الوظائف والفصول المدهشة التي يجب عليك إلقاء نظرة عليها واستخدامها في مشاريعك المستقبلية.

ما هو REST API؟

REST تعني "نقل الحالة التمثيلية". API تعني "واجهة برمجة التطبيقات". إنها مجموعة من القواعد التي تسمح لأحد تطبيقات البرامج بالتحدث إلى الآخر. يمكن أن تشمل هذه "القواعد" إنشاء وقراءة وتحديث وحذف العمليات.

إليك ما يمكن أن يبدو عليه في الحياة اليومية: أنت تبحث عن غرفة فندق من موقع حجز السفر عبر الإنترنت. باستخدام نموذج الموقع عبر الإنترنت ، يمكنك تحديد المدينة التي تريد البقاء فيها وتسجيل الوصول وتواريخ الخروج وعدد الضيوف وعدد الغرف. ثم انقر فوق "البحث".
كما تعلم ، فإن موقع السفر يجمع المعلومات من العديد من الفنادق المختلفة. عند النقر فوق "بحث" ، يتفاعل الموقع بعد ذلك مع واجهة برمجة التطبيقات لكل فندق ، مما يوفر نتائج للغرف المتاحة التي تفي بالمعايير الخاصة بك. يمكن أن يحدث كل ذلك في غضون ثوانٍ بسبب واجهة برمجة التطبيقات (API) التي تعمل كرسول يعمل ذهابًا وإيابًا بين التطبيقات وقواعد البيانات والأجهزة.

لماذا نحتاج REST API؟

في العديد من التطبيقات ، تعد REST API ضرورية لأن هذه هي الطريقة الأخف وزنا لإنشاء أو قراءة أو تحديث أو حذف المعلومات بين التطبيقات المختلفة عبر الإنترنت أو بروتوكول HTTP. يتم تقديم هذه المعلومات إلى المستخدم في لحظة خاصةً إذا كنت تستخدم JavaScript لعرض البيانات على صفحة ويب.

فهم REST API

يوفر REST مجموعة من طرق HTTP التي يتم استخدامها لتغيير البيانات. فيما يلي طرق HTTP الشائعة:

GET - يستخدم لقراءة البيانات واستردادها.

وظيفة - يستخدم لإدخال البيانات.

PUT / PATCH - يستخدم لتحديث البيانات.

حذف - يستخدم لحذف البيانات.

أساسا ، تعمل الظواهر REST على الإجراءات والموارد. كلما تم استدعاء أي عنوان URL للإجراء ، فإنه ينفذ طريقة فردية (أو مجموعة من الأساليب) على عنوان URL هذا. سأناقش هذا أدناه مع أمثلة حقيقية.

أولاً ، سنحتاج إلى تثبيت إطار Slim لمشروع REST API.

تثبيت سليم الإطار من الملحن

انتقل إلى الدليل الرئيسي حيث قمت بحفظ المشروع وافتح المحطة الطرفية أو cmd وقم بتشغيل تثبيت الملحن.

إعداد قاعدة البيانات

هيكل جدول المنتج

تفريغ البيانات لجدول المنتج

هيكل الجدول الفئة

تفريغ البيانات لجدول الفئة

الاتصال بقاعدة البيانات

يُظهر الرمز أدناه بيانات اعتماد قاعدة البيانات. يمكنك استخدام PDO أو MYSQli عن طريق التغيير والتبديل في database_engine إلى DbPDO أو DbMySQLi.

/index.php

طرق API

/index.php

المنتج

يُظهر الرمز أدناه فئة اسم المنتج مع العديد من خصائصه.

يحتوي متغير تعريف $ ثابت على بنية جدول المنتج.

تحتوي خاصية الجدول على اسم الجدول بدون بادئة الجدول. مفتاح الصفيف الأساسي هو المفتاح الأساسي للجدول الحالي. يحتوي مفتاح الحقول على جميع أعمدة الجدول باستثناء الحقل الأساسي.

لا تقم بتضمين المفتاح الأساسي في مفتاح الحقول.

سيتم تحديث الأعمدة المتوفرة في صفيف الحقول فقط.

كما أن لديها طريقة منشئ تقبل id $ كما param. سنستخدم معرف الهوية هذا لقراءة صف محدد من قاعدة البيانات. لقراءة منتج مع product_id of 5 ، سنفعل ذلك ببساطة عن طريق:

$ المنتج = منتج جديد (5) ؛

/classes/Product/Product.php

سننشئ بنية مماثلة لكل جدول نقوم بإنشائه. باستخدام برنامج ObjectModel ، سيكون من السهل إضافة بياناتنا والحصول عليها وحذفها وتحديثها.

خذ هذا على سبيل المثال. إذا أردنا حذف منتج ، فنحن ببساطة:

$ product = منتج جديد (THE_ID_TO_DELETE) ؛
$ بالمنتجات> حذف ()؛

طريق المنتج

يُظهر الرمز أدناه فئة اسم المنتج. هذا هو المكان الذي تتم فيه الإشارة إلى جميع نقاط النهاية التي تتعلق بالمنتجات.

/controllers/v1/Product.php

قراءة المنتجات في قاعدة البيانات - طريقة GET

الكود أدناه يحصل على جميع المنتجات في قاعدة البيانات وإرجاع استجابة json لجميع المنتجات.

نحصل أولاً على الوصول إلى متغير api الذي يمثل فئة تطبيق PHP بالكامل. نحن نستخدم الفصل لإعادة الردود ، والوصول إلى البيانات المرسلة إلى api لدينا.

لتحديد عمود واحد من قاعدة البيانات على سبيل المثال: product_id

$ sql-> حدد ( 'product.`product_id`')؛

لتحديد أعمدة متعددة:

$ sql-> select (‘product.`product_id`، product.`name`’)؛

لجعل هذا الطريق نشطًا ، نقوم بتسجيل نقطة النهاية التي سيتم استخدامها لاسترداد المنتجات.

$ api-> get (‘/ products؟ '، Best \ BestShop \ v1 \ Product: getProducts’) -> name (‘get_products’)؛

-> الاسم () ليس إلزاميا. هناك أوقات تحتاج فيها إلى استخدامها. إذا كنت مهتمًا بمعرفة المزيد ، اترك تعليقًا أدناه.

انتاج |

تحتاج إلى استخدام POSTMAN لاختبار API لدينا. قم بتنزيل نسختك من POSTMAN هنا.

إطلاق POSTMAN. أدخل ما يلي كعنوان URL للطلب.

HTTP: // المضيف المحلي / المعهد / V1 / منتجات

انقر على زر "إرسال" الأزرق.

أدناه سيكون الإخراج إذا كان هناك بيانات المنتج.

في حالة عدم وجود منتجات في قاعدة البيانات ، سيكون مفتاح المنتجات في الاستجابة فارغًا. من الجيد دائمًا الاحتفاظ بهيكل ردك عندما تكون هناك بيانات وعند عدم وجودها. ما لم يكن هناك خطأ في الطلب. في مثل هذه الحالة ، سنرجع "النجاح": fasle مع رمز خطأ أو رسالة. سيكون على المطور تحديد ما يجب فعله بمنتجات فارغة. على الأقل هذا ما أفعله. يمكنك أن تفعل ذلك بأي طريقة تشعر أنك أفضل بالنسبة لك.

إضافة منتج جديد - طريقة ما بعد

لإضافة منتج جديد ، نستخدم وظيفة addProduct في مسار المنتج.

/controllers/v1/Product.php

لإضافة منتج جديد ، نستخدم طريقة POST. للوصول إلى البيانات المقدمة إلى api ، نستخدم ببساطة

$ payload = $ api-> request () -> post ()؛

إذا أرسلنا طريقة GET إلى api نستخدمها:

$ payload = $ api-> request () -> get ()؛

سيضع الكود أعلاه جميع البيانات المقدمة إلى api في متغير الحمولة الصافية $. للحصول على بيانات من متغير الحمولة النافعة ، نستخدم الكود أدناه.

$ name = ArrayUtils :: get ($ payload، 'name')؛

تحتوي فئة ArrayUtils على العديد من الوظائف المفيدة التي تتعامل مع المصفوفات. مع هذه الفئة ، لن تضطر إلى كتابة أصل لا نهاية له وما إلى ذلك. للتحقق مما إذا كان هناك مفتاح متاح في صفيف:

if (ArrayUtils :: has ($ payload، 'name')) {/ *** افعل شيئًا *** /}

لتنشيط هذا المسار ، نسجل نقطة النهاية التي سيتم استخدامها لإضافة منتجات جديدة. لاحظ أننا نستخدم $ api-> post () لنقطة النهاية هذه منذ أن قمنا بإضافة بيانات الإرسال عبر طريقة POST

$ api-> post (‘/ products؟ '،‘ \ BestShop \ v1 \ Product: addProduct ’) -> name (‘ add_product ’)؛

انتاج |

لاختبار نجاح إنشاء منتج ، افتح POSTMAN. أدخل ما يلي كعنوان URL للطلب.

HTTP: // المضيف المحلي / المعهد / V1 / منتجات

انقر فوق "الجسم" علامة التبويب. انقر فوق "الخام". أدخل قيمة JSON هذه وانقر فوق إرسال عبر طريقة POST.

للحصول على طلب ناجح ، سترى استجابة مشابهة لهذا.

إذا تعذر على api إنشاء منتجنا ، فسوف يُرجع الرد أدناه دون المنتج. لاحظ أن النجاح الآن مضبوط على false.

إذا أرسلنا بيانات غير صالحة إلى واجهة برمجة التطبيقات ، فسوف تُرجع استجابة خطأ. في الحالة أدناه سعر المنتج ليس مبلغًا صالحًا.

الحصول على منتج واحد / معين - طريقة الحصول على

أدناه هو getProduct وظيفة تقبل $ productId كمعلمة. يتم تمرير هذا إلى api لدينا عبر نقطة النهاية. / المعهد / V1 / المنتجات / {PRODUCT_ID}

انتاج |

أولاً ، سنختبر منتجًا موجودًا. افتح POSTMAN. أدخل ما يلي كعنوان URL للطلب عبر طريقة GET. انقر على زر "إرسال" الأزرق.

HTTP: // المضيف المحلي / المعهد / V1 / المنتجات / 1

بعد ذلك ، سنختبر منتجًا غير موجود. أدخل ما يلي كعنوان URL للطلب. انقر على زر "إرسال" الأزرق.

HTTP: // المضيف المحلي / المعهد / V1 / منتجات / 999

تحديث منتج واحد / معين - طريقة التصحيح

فيما يلي وظيفة updateProduct التي تقبل $ productId للمنتج الذي نقوم بتحديثه كمعلمة. يتم تمرير هذا إلى api لدينا عبر نقطة النهاية. / المعهد / V1 / المنتجات / {PRODUCT_ID}.

للوصول إلى البيانات المقدمة ، نستخدم:

$ payload = $ api-> request () -> post ()؛

انتاج |

افتح POSTMAN. أدخل ما يلي كعنوان URL للطلب.

HTTP: // المضيف المحلي / المعهد / V1 / المنتجات / 3

انقر فوق "الجسم" علامة التبويب. انقر فوق "الخام". أدخل قيمة JSON التالية (تأكد من وجود المعرف في قاعدة البيانات الخاصة بك) وانقر فوق الزر "إرسال" الأزرق عبر طريقة التصحيح.

معرف المنتج 3 ، هو مجرد مثال. تحتاج إلى تحديد معرف منتج موجود في قاعدة البيانات الخاصة بك. إذا كان معرف المنتج المقدم غير موجود ، فستتلقى خطأ لم يتم العثور على المنتج.

إذا نجح تحديث منتج ما ، فيجب أن تحصل على رد مشابه لهذا:

إذا فشل api في تحديث المنتج ، فستحصل على الرد التالي.

حذف منتج واحد / محدد - طريقة الحذف

أدناه هي وظيفة deleteProduct التي تقبل $ productId للمنتج الذي نريد حذفه كمعلمة. يتم تمرير product_id إلى api عبر نقطة النهاية. / المعهد / V1 / المنتجات / {PRODUCT_ID}.

انتاج |

افتح POSTMAN. أدخل ما يلي كعنوان URL للطلب.

HTTP: // المضيف المحلي / المعهد / V1 / المنتجات / 1

انقر فوق "الجسم" علامة التبويب. انقر فوق "raw" وانقر فوق الزر "إرسال" الأزرق عبر طريقة DELETE.

إذا تم حذف منتج بنجاح ، يجب أن تحصل على استجابة مماثلة لهذا.

إذا فشل api في حذف المنتج ، فيجب أن تحصل على الرد أدناه.

وهذا كل شيء يا شباب! إذا أعجبك هذا المنشور ، فتأكد من إعطائي بعض أدناه وتتبعني لمزيد من المقالات. إذا كان لديك أي أسئلة أو تعليقات يرجى ترك تعليق. شيء أخير ، إذا كنت مهتمًا بمشروع متقدم به مصادقة api وتحميل الملفات والعديد من الأشياء الرائعة ، أخبرني بذلك.

للحصول على جميع ملفات هذا المشروع ، قم بتنزيل أو تصفح الكود ، تفضل بزيارة المستودع عبر رابط جيثب هذا.

مدقق الانتحال المجاني ، مولد الاقتباس / مولد المراجع ، أطروحة المولد ، حاسبة المعدل التراكمي ، الكلمات إلى صفحات المحول ، والكلمات إلى دقائق المحول للطلاب.