REST
الطريقة الأشيع لتحدّث الأنظمة بعضها إلى بعض على الويب. ليست منتجاً بل نمط واجهة، وأغلب ما تديرونه يتحدثه.
الطريقة الأشيع لتحدّث الأنظمة بعضها إلى بعض على الويب. ليست منتجاً بل نمط واجهة، وأغلب ما تديرونه يتحدثه.
ماذا تعرض واجهة REST، ولماذا يهمّ ذلك هنا
حين لا يكون هناك تكامل جاهز، تبقى الواجهة البرمجية هي الطريق. وهذا النمط هو الأشيع بفارق كبير، وأغلب الأنظمة الحديثة تعرضه.
وقيمته العملية أنه يجعل الأنظمة الخاصة قابلة للربط. النظام الذي بُني داخلياً لمؤسستكم لا يوجد له تكامل جاهز، لكن واجهته تكفي.
والقواعد لا تتغير: نطاق محدد، وقراءة فقط في البداية، وبيانات اعتماد خدمة منفصلة، وترجمة المخرَج إلى لغة مفهومة بدل تمرير الاستجابة كما هي.
- نقاط النهاية المحددة — ما تسمحون باستدعائه صراحة.
- الحقول — ما يُقرأ من الاستجابة.
- القراءة فقط — بلا استدعاءات تغيّر شيئاً.
- بيانات اعتماد خدمة — منفصلة وقابلة للإيقاف.
- الحدود — احترام قيود المعدل لديكم.
أسئلة يجيب عنها Elbi عبر واجهة REST
ما حالة هذا؟
قراءة من نقطة النهاية المحددة بترجمة مفهومة.
هل هذا موجود؟
بحث ضمن النطاق المسموح.
ما القيمة الحالية؟
الحقل المحدد من الاستجابة.
متى تغيّر هذا؟
الطابع الزمني المسجّل.
من المسؤول؟
الحقل المسجّل في استجابة الواجهة، حيث يكون عرضه مناسباً.
ما التفاصيل؟
ما تسمحون بعرضه من الاستجابة لا كلها.
كيف يعمل Elbi مع واجهة REST
- قائمة مسموحة بالطرق والمساراتيُكتب النطاق عمليات محددة، مثل GET لطلب واحد برقمه المرجعي، لا «الواجهة» كلها. وما ليس في القائمة لا يُستدعى أبداً، سواء كان مساراً آخر أو طريقة أخرى على المسار نفسه.
- القراءة طلبات GETتستخدم الاستعلامات طريقة GET، وهي بحسب تعريف HTTP لا تغيّر شيئاً على الخادم. أما الكتابة، كطلب POST لإنشاء سجل أو PATCH لتعديله، فبنود مستقلة في القائمة، لا تُفعَّل إلا عن قصد، ويمكن أن تنتظر تأكيد شخص.
- مصادقة يصدرها فريقكمبحسب النظام، يستخدم الاتصال مفتاح API، أو رمز وصول يُحصل عليه عبر منح OAuth من نوع client credentials، أو TLS متبادلاً حين تطلب الواجهة شهادة عميل. وكلها تُصدر من جهتكم وتُغيَّر أو تُلغى دون الرجوع إلينا.
- المعاملات تأتي من المحادثةيجمع Elbi الرقم المرجعي أو التاريخ أو المعرّف الذي تحتاجه العملية، ويتحقق من صيغته، ثم يملأ به معاملات المسار أو الاستعلام. ويمكن تمرير هوية السائل الموثّقة أيضاً، لترفض الواجهة نفسها أي سجل لا يخصه.
- رموز الحالة تصير جملاًالرمز 404 يعني «لا يوجد طلب بهذا الرقم»، لا «النظام معطّل». والرمز 401 أو 403 يعني خللاً في بيانات الاعتماد أو الصلاحية، فيُحال إلى موظف ولا تُعاد المحاولة. والرمز 429 طلب من الواجهة بالتمهّل، ويُحترم. أما أخطاء الخادم وانتهاء المهلة فتصير عبارة واضحة: «لا أستطيع الوصول إلى ذلك النظام الآن».
- الحقول اللازمة وحدهاكثيراً ما تحمل استجابة JSON أكثر بكثير مما تحتاجه الإجابة. فتُختار الحقول القليلة التي تحتاجها الجملة، كالحالة والتاريخ والمبلغ، ويُترك الباقي.
عمليات REST وبيانات الاعتماد، وما يبقى بأيديكم
الافتراضي هو GET على الموارد المدرجة. وصلاحية القراءة لا تعني أبداً POST أو PUT أو PATCH أو DELETE؛ فكل عملية كتابة تُدرج وحدها، وقلّما يستحق DELETE أن يُدرج أصلاً.
والتفويض في الواجهة نفسها هو ما يحدد ما تصل إليه بيانات الاعتماد. وحين تستطيع الواجهة العمل نيابة عن مستخدم أو التصفية حسب العميل، تُمرَّر هوية السائل لتفرض حدود كل شخص بنفسها؛ وإلا قُصرت الإجابات على سجلات السائل نفسه.
والمفاتيح وأسرار العملاء والشهادات تُنشأ في بوابة الواجهات البرمجية لديكم أو في النظام نفسه، مقصورة على العمليات المدرجة حيث تسمح المنصة بذلك. وإلغاؤها يقطع الاتصال فوراً.
والاستجابات تُقرأ لحظة السؤال، وتُختصر إلى الحقول اللازمة، ولا تُحفظ نسخة منها. ومحتوى الرسائل يُتلف خلال 24 ساعة، ولا تطّلع عليه أي خدمة ذكاء اصطناعي خارجية.
ويُسجَّل كل استدعاء بطريقته ومساره ورمز حالته ومحادثته ووكيله، بما يتطابق مع سجلات الوصول في بوابتكم. وانتهاء المهلة وأخطاء الخادم وقيود المعدل تُبلَّغ كلها على أنها تعذّر وصول، مع عرض التحويل إلى موظف، ولا تُقدَّم استجابة محفوظة على أنها حيّة.
ما الذي يحلّ محلّه هذا
ما يحلّ محلّه هذا هو استحالة الربط بالأنظمة الخاصة. المؤسسة التي بنت نظاماً داخلياً تجد نفسها خارج كل تكامل جاهز، ويبقى ذلك النظام جزيرة.
والنتيجة أن أهم بياناتكم — تلك التي بنيتم نظاماً خاصاً لها — هي الأبعد عن أي مساعد، وهذا معاكس تماماً لما ينبغي.
والواجهة البرمجية تعالج ذلك: أي نظام يعرض واجهة يمكن ربطه بنطاق محدد، وهذا يجعل المشروع مستقلاً عن قائمة التكاملات الجاهزة.
أين يكون ربط REST هو الطريق المعتاد
الأنظمة الخاصة
لا يوجد لها تكامل جاهز، والواجهة هي الطريق.
البرمجيات الحديثة
أغلبها يعرض هذا النمط افتراضياً.
الخدمات السحابية
واجهات معلنة وموثّقة.
التقنية
ربط ما لا يوجد له تكامل.
العمليات
بيانات تشغيلية من أنظمة خاصة.
الإدارة
أرقام من أنظمة داخلية دون طلب تقرير.
كيف تستفيدون من واجهة REST
انظروا إلى ما تجيده الواجهة أصلاً. أغلب واجهات REST مبنية حول جلب مورد واحد بمعرّفه، وهذا بالضبط شكل الأسئلة التي تهيمن على التواصل: هذا الطلب، وهذه المعاملة، وهذه الفاتورة. اربطوا هذه الاستعلامات أولاً.
وإن كان النظام ينشر وصف OpenAPI فابدأوا منه؛ فهو يسرد المسارات والمعاملات وحقول الاستجابة، ويكاد يكتب وثيقة النطاق بنفسه. وإن لم يكن، فبضع استجابات حقيقية من بيئة اختبار تؤدي الغرض نفسه.
واتركوا نقاط النهاية التي تسرد وتبحث إلى وقت لاحق. نقطة تعيد كل الطلبات المطابقة لمرشّح مفيدة للموظفين وخطرة في المحادثة، أما التي تعيد طلباً واحداً لعميل موثّق فهي ما يحتاجه المساعد.
ما الذي يتطلبه ربط واجهة REST
- الأسئلة أولاً ثم نقاط النهايةمن التواصل الفعلي، اختاروا الأسئلة التي تستحق الإجابة، ثم ابحثوا عن نقطة النهاية الواحدة التي تجيب عن كل منها. وإن لم توجد نقطة مناسبة فتلك نتيجة بحد ذاتها، لا مبرر لتوسيع النطاق.
- كتابة القائمة المسموحةالطريقة والمسار والمعاملات وحقول الاستجابة المستخدمة، لكل عملية. وهذه هي الوثيقة التي يوقّعها فريق الأمن لديكم ويقرؤها المدقّق.
- إصدار بيانات الاعتمادينشئ فريقكم مفتاح API أو عميل OAuth أو شهادة العميل، ويُفضَّل أن تُقصر على العمليات المدرجة في البوابة. وتبقى بأيديكم تغيّرونها أو تلغونها.
- مواءمة الاستجابات والأخطاءأسماء الحقول والرموز والقيم المعدودة تُواءَم مع عربية وإنجليزية واضحتين، ومعها ما ينبغي أن ينتج عن كل رمز خطأ في المحادثة.
- الاختبار على بيئة غير إنتاجيةأرقام مرجعية غير موجودة، وبيانات اعتماد منتهية، وقيود معدل، واستجابة بطيئة، وسجل يخص شخصاً آخر. وكل حالة يجب أن تعطي إجابة متوقعة وصادقة.
- الإطلاق بالقراءة ثم الكتابةابدأوا بعمليات GET، وراجعوا شهراً من الحركة الحقيقية، ثم أضيفوا أول POST إن أثبت جدواه.
البيانات الشخصية في استجابات الواجهة
تميل استجابات الواجهات إلى الإفراط: نقطة العميل تعيد رقم الهوية وتاريخ الميلاد والعنوان الكامل لأن مستهلكاً آخر احتاجها يوماً. وبموجب نظام حماية البيانات الشخصية فالعبرة بما يُعالَج فعلاً، ولذلك فمواءمة الحقول ضابط خصوصية بقدر ما هي عمل تقني، وكل ما لا تحتاجه الجملة يُترك.
وحيث تدعم الواجهة اختيار الحقول أو عرضاً أضيق، فاستخدموه كي لا تغادر البيانات الزائدة نظامكم أصلاً. وما يصل إلى Elbi يخدم الإجابة المطروحة، والمحادثة التي تحملها تُتلف خلال 24 ساعة.
وأسئلة المراجعة الأربعة هنا قصيرة الإجابة: ما يُقرأ: العمليات المدرجة وحقولها. ومن يراه: السائل وحده. وأين يذهب: لا يتجاوز الإجابة. وكم يبقى: المحادثة تُتلف خلال 24 ساعة.
REST والبدائل
REST هو الافتراضي في الأنظمة الحديثة، والطريق الأبسط حين تعرض الواجهة السجل الذي يدور حوله السؤال. لكنه ليس الطريق الوحيد. فحيث يوفّر النظام GraphQL، يستطيع استعلام واحد أن يعيد الحقول المطلوبة بالضبط عبر سجلات مترابطة. وحيث يتحدث SOAP، كما لا تزال تفعل أنظمة كثيرة في البنوك والاتصالات والجهات الحكومية، يصف عقد رسمي كل عملية. وحيث لا توجد واجهة أصلاً، قد يكون العرض المقروء فقط من قاعدة البيانات أو تبادل الملفات المجدول هو الخيار الواقعي.
وكثير من المؤسسات تضع بوابة واجهات برمجية أمام خدماتها الداخلية. والربط عبر البوابة بدل كل خدمة على حدة يُبقي المصادقة وقيود المعدل والتسجيل في مكان واحد يديره فريقكم أصلاً.
والخطأ المتكرر هو إصدار بيانات اعتماد تستطيع استدعاء كل شيء لأن ذلك أسرع. القائمة المسموحة قصيرة لسبب.
ما الذي تراه المؤسسات عادة
أسئلة متكررة
لا. نقاط النهاية تُحدَّد صراحة، والافتراضي قراءة فقط بلا أي استدعاء يغيّر شيئاً.
يحتاج واجهة تعرض ما تريدون قراءته. وإن لم تكن موجودة فبناؤها عمل من جانبكم يسبق الربط.
كبيانات اعتماد خدمة منفصلة قابلة للمراجعة والإيقاف، لا كحساب شخص.
تُحترم كما هي معرّفة لديكم، والحمل يُقاس في الاختبار قبل الإطلاق.
لا. تُترجم إلى جملة مفهومة، لأن الاستجابة الخام ليست إجابة لأي سائل.
بإيقاف بيانات اعتماد الخدمة، دون أثر على بقية النظام.
اربط Elbi بواجهة REST لديكم
عمليات مسمّاة على أنظمتكم أنتم، تُجاب بالعربية والإنجليزية.