عند إنشاء نقطة نهاية لعملية أعمال ، يجب عليك تحديد نوع البيانات التي سيتم إرسالها في هذا الطلب ( Request payload type ). الخيار الأكثر شيوعًا هو JSON ؛ يسمح لك بتحديد جميع المعلمات الضرورية بسهولة وتمرير نموذج بيانات أو مجموعة من الكائنات. بالإضافة إلى ذلك ، هناك خيارات أخرى ممكنة ، على سبيل المثال ، XML أو Multipart Form (إذا كنت بحاجة إلى إرسال ملفات).
في الوقت نفسه ، يكون الموقف مقبولًا عندما لا يكون الهيكل الدقيق معروفًا مسبقًا (أو ببساطة لا يهم). في هذه الحالة ، يكون الخيار المعقول هو استخدام الاستعلامات " raw ".
عملية الأعمال للطلبات raw
تخيل موقفًا قد يكون فيه هذا مطلوبًا. لنفترض أن الخدمة التي نقوم بتطويرها هي مجرد رابط اتصال. وتتمثل مهمتها في تلقي طلب من المستخدم ، والتحقق من التفويض ، وحفظ السجلات ، وإجراء الحماية من البريد العشوائي ، وإعادة توجيه الطلب بشكل أكبر إذا كان كل شيء على ما يرام.
من الميزات المهمة في الاستعلامات Raw عدم استخدام معلمات الإدخال عند تصميم العمليات التجارية. بدلاً من ذلك ، يتم استخدام كتلة خاصة للحصول على نص الطلب - Get Request Body . افترض أنك مهتم بمعلومات موسعة حول الطلب. في هذه الحالة ، تعد كتلة Current Request Info خيارًا مناسبًا - فهي لا تُرجع نص الطلب فحسب ، بل تُرجع أيضًا معلمات إضافية ورؤوس الطلبات.
في حالة اهتمامنا برأس معين من الطلب ، يمكن الحصول عليه باستخدام كتلة Get Request Header . يقرأ المثال أعلاه رأس X-Real-IP ، والذي يحتوي على عنوان IP للطلب. يتم تمرير IP الناتج إلى وظيفة يجب أن تتحقق من أن عنوان IP المحدد صالح وليس في القائمة السوداء للعناوين المحظورة. نتيجة لذلك ، سيتم إما إحباط العملية برسالة خطأ مناسبة أو ، إذا كان كل شيء على ما يرام ، فسيتم السماح بمزيد من التنفيذ.
يتم تمثيل الطلب ، الذي تم استلامه كـ Raw ، كمصفوفة من البايت. لتسهيل الإدراك ، يمكن تحويلها إلى سلسلة ( To String block) ؛ في هذا النموذج ، يتم تخزين المعلومات في السجلات.
في هذه الحالة ، يمكن إعادة توجيه الطلب نفسه ، بدون أي تحويلات ، باستخدام كتلة HTTP Request . في هذا المثال ، يتم تحديد طريقة الطلب وعنوان URL الخاص به ونص الطلب (الذي تم الحصول عليه من كتلة Current Request Info ). يتم استخدام نتيجة كتلة HTTP Request كنتيجة لعملية الأعمال بأكملها.
تظهر لقطة الشاشة العملية التجارية النهائية. يرجى ملاحظة أن كتل الوظائف ( FUNC Save request Log و FUNC IP Blacklist Check ) هي أمثلة ولا توجد إلا في نطاق هذا المشروع.
وبالتالي ، يمكن استخدام نقطة النهاية للتعامل مع أي طلب بغض النظر عن محتواه الفعلي. لا تحتاج إلى معرفة الطلب الدقيق الذي يجب إرساله إلى خدمة جهة خارجية ، وحتى إذا كانت هناك بعض التغييرات فيه (إضافة نموذج ، وإعادة تسمية المعلمات) ، يمكنك الاستمرار في استخدام نقطة النهاية دون إجراء تغييرات على مشروع.