دخول
ما هو JSON-RPC API؟ هذا واحد من أنواع واجهة برمجة التطبيقات ، ولكنه أيضًا معيار واضح ، والذي قد لا يكون موجودًا في هذه المقالة (نعم ، سيكون هناك samopis).
بعد العبث بواجهة برمجة تطبيقات RESTful لفترة من الوقت وغضبًا شديدًا من ذلك ، لمدى بساطتها من الخارج ويمكن طيها داخلها ، ذهبت إلى google بحثًا عن بديل.
وقد صادفت مقالًا عن JSON-RPC API ، وكنت مهتمًا جدًا بمفهومه ، لدرجة أنني قررت تطبيق دراجتي بأقصى قدر ممكن.
JSON-RPC API Conceptالفكرة الرئيسية لهذا المعيار هي في نهج معين وجوه المنحى.
بمعنى الكلمة ، يبدو الاستعلام كما يلي:
{ "api version": 0.1, "method": "object.method", "params": { "user id": 1234 } }
وهذا مجرد طلب واحد ، والسحر الكبير لواجهة برمجة التطبيقات هذه هو أنه يمكن دمجها بشكل جميل ، وهذا يتيح لنا الفرصة لاستخدامها في طلبات الدفعات (تحميل شيء ما في أجزاء).
وهذا يعني أن الطلب الكامل قد يبدو هكذا.
{ "api_v": "0.1", "reqs": [ { "name": "my_important_request", "method": "user.kick_out", "params": { "id": "1234", "when": "now", ... } }, ... ] }
هنا api_v هو إصدار API ، والمقدمات هي مجموعة من الطلبات. ما هو مهم ، كل طلب له طريقة (class.method) ، المعلمات والاسم. الاسم يلعب دورا كبيرا هنا. عندما تتلقى استجابة من الخادم ، يمكنك الرجوع إلى نتيجة الاستعلام باسمها. مثال: يجب أن يُطلق على الطلب الذي يستخدم طريقة لإضافة مستخدم "user_creating" ، ولكن هذا الأمر يعود إليك ؛)
لنبدأ الكتابة
أول شيء يجب القيام به هو فئة واجهة برمجة التطبيقات (API) ، وفي حالتي فهي أقل مما يجب. بعض العمليات منفصلة عني ، لكن هذا لا يغير الجوهر.
<?php
توجد تعليقات في الكود ، ولكن إليك استطرادا مختصرا ... نسمي API وظيفة غير معروفة ، استخدم الدالة __call السحرية لهذه الأغراض. أي عن طريق استدعاء وظيفة "Object.method" لواجهة برمجة التطبيقات ($ api -> {"Object.method"}) ، فإنها تقسم السلسلة تلقائيًا إلى زوج من طريقة الكائن وتدعوها. بعد ذلك ، تتم إضافة نتائج جميع الاستعلامات إلى صفيف واحد ويتم إرسالها مرة أخرى بتنسيق json. كل شيء بسيط.
فصول
إنها مهمة جدًا - حيث يتم تخزين الفئات في المجلد المصدر وهذه هي الطريقة التي يجب أن يبدو بها الفصل
<?php class object{ function method($params){ } }
يجب أن يتطابق اسم الفصل مع ما هو مطلوب في الطلب ، كما هو الحال مع اسم الطريقة. كل شيء آخر لا يهم. طريقة يمكن أن تفعل أي شيء وإرجاع أي شيء.
لكننا نحتاج أيضًا إلى برنامج نصي للتحكم. هذا هو نفس البرنامج النصي الذي سيتم استدعاؤه عند الطلب.
<?php
ما الذي يحدث هنا؟ نقوم بتمكين واجهة برمجة التطبيقات لدينا وفقًا للإصدار المحدد في الطلب. نقوم بفك تشفير طلبات json وتصفح كل منها. نحن نسمي طريقة API من النوع "object.method" ونحفظ نتيجتها تحت اسم هذا الطلب (تمت كتابتها أعلاه أن لكل طلب اسمه الخاص به). بعد تنفيذ جميع الطلبات ، نرجع مجموعة كبيرة من النتائج ... وبشكل أساسي ، هذا كل شيء.
شبيبة صغيرة
فيما يلي مثال صغير لوظيفة في js والتي ستقدم طلبات API من هذا النوع. إنه مكتوب باستخدام jQuery ، وأنا أعتذر لك عن ذلك ، لكن من الأسهل إظهار الجوهر دون الكثير.
function api_call(reqs, callback){
إليك طلب POST بسيط ، ولا يوجد شيء خاص تقريبًا ، باستثناء أنه من الممكن تحديد طلب واحد فقط ، وليس صفيفًا ، وأنا أيضًا احفظ جميع الردود في صفيف من الطلبات التي تم تنزيلها ، إنه فقط للراحة ، إنه ليس ضروريًا على الإطلاق.
حسنًا ، آمل أن تكون الفكرة الرئيسية واضحة بالنسبة لك. كنت أرغب في عمل واجهة برمجة تطبيقات بسيطة وبديهية - فعلت. بالنسبة للجزء الأكبر ، كنت أرغب في عرض مثل هذه الطريقة البسيطة لإنشاء واجهة برمجة تطبيقات متعددة الوظائف.
نراكم قريبا ...