اذهب إلى المحتوى
  • 0

هل أقوم بوضع التعليقات في endpoint منفصل أم مدمجة مع المنشورات عند تصميم api

خالد مرتضى

السؤال

Recommended Posts

  • 1

من الأفضل أن تستخدم الطريقة الثانية لأنها تضمن عدم إختلاط التعليقات أو إضافة تعقيد إلى الطلب، فعلى سبيل المثال إن كان لديك منشورين وتريد الحصول على التعليقات الخاصة بالمنشور الثاني فسيكون لديك عنوان URL سهل للوصول إلى التعليقات كالتالي:

/api/posts/2/comments

حيث رقم 2 في العنوان السابق يعبر عن معرف id المنشور، وبالتالي يمكنك الحصول على التعليقات الخاصة بمنشور معين فقط.

وهذا المبدأ في التنظيم يسمى RESTful APIs ويمكنك أن تتعلم أكثر عنه من خلال هذه المقالة:

بينما لإستعمال الطريقة الثانية فيجب عليك أن تقوم بإرسال معرف المنشور post id مع الطلب ومن ثم يتم معالجة الطلب من قِبل المتحكم controller للحصول على معرف المنشور وإعادة التعليقات الخاصة بهذا المنشور مما يضيف طبقة إضافية من التعقيد ليس لها داعٍ.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

قبل الاجابة على السؤال سنضع قاعدة شبه عامة , عندما تتعامل مع موارد(resoueces) فقط نقوم بصنع نقطة نهاية(end point) منفصلة

ماهي الموارد

الموارد هي أي كائن له خصائص ودوال وعﻻقات مع كائنات اخرى

فمثلاً الuser وال post موارد لان كلا منهم له خصائص وحقول منفردة ويوجد عمليات او دوال خاصة بكلٍ منهم ويوجد عﻻقات بينهم وبين بعض 

هل التعليق يمكن أن نعتبره من الموارد؟

هذا سؤال شائك قليلاً حيث أن التعليق له خصائص مثل المحتوى وتاريخ النشر والتعديل وعمليات مثل الاضافة والتعديل وعﻻقة بينه وبين المستخدم الذي نشره والمنشور الذي كتب فيه التعليق

ولكن في نفس الوقت يمكن أن نعتبر التعليق أحد حقول المنشور, حيث أنه يعتمد بشكل أساسي على المنشور فلن يحتاج أحد أن يستدعي التعليق منفرداً, وإنما دائماً يتم إستدعاؤه مع المنشور فلذلك يتم غالباً إعتبارهُ حقل مدمج ضمن الpost

ولذلك من الأفضل أن يتم تصميم الapi على تلك الشاكلة 

/api/post/post_id/comment

ويتم إستخﻻص المُعرف الخاص بالمُستخدم عبر إستخراجه من الjwt  المُرسلة عبر الheaders 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...