Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

11 تغريدة 30 قراءة Jul 09, 2021
من منا لم يكتب http في متصفحه ؟ او لم يرها او يسمع بها عند استخدامه للانترنت؟ هل يوجد مطور ويب لم يسمع عن REST؟ او لم يسمع عن Apache HTTP Server ؟
ماسبق هو من نتاج Roy @fielding و باقي الفريق.
( سلسلة عن RESTful Web API الحقيقية )
في بدايته عمل Roy مع مخترع الWWW او الWorld Wide Web السيد Timothy Berners-Lee ووضعا مع اخرين خصائص الHTTP1.1 عام 1998 و الذي مازال يعمل إلى الان. اما بداية الHTTP فكانت عام 1989 بواسطة Berners-Lee. يعمل Roy حاليا في شركة ادوبي بعد أن ترأس Apache Foundation. لننتقل إلى REST.
كان REST فكرة ضمن اطروحة دكتوراه لRoy عام 2000 و عرّف فيها Roy الREST كـ
an architectural style for distributed hypermedia applications.
بغض النظر عن معنى hypermedia الآن فهي اصل في التعريف بمعنى اذا لم يكن هناك hypermedia في الapi فهي اذا ليست RESTful. ( روي اللي قال مش انا )
حسب التعريف السابق فREST لاتتحدث عن طريقة كتابة الURL فانظر مثلاً إلى google map كيف يكتبها او إلى weather.io و ليست عن تناقل البيانات بصيغة JSON فبعضها يعود بصورة او فيديو او خريطة ولا عن استخدام الVerbs مثل GET و POST! فلم يحددها التعريف.
قبل أن ادخل في شرح معنى الhypermedia هناك فكرة خاطئة عن معنى كلمة Resource حيث اغلب الApi التي نجدها عبارة عن رفع لاشياء من طبقة سفلى مثل جداول قواعد البيانات لجعلها قابلة للتعامل في الAPI
حيث ان الAPI تمثل اعمال CRUD انشاء بـPost و قراءة بGet و تعديل بPUT او PATCH و حذف بـDELETE.
فهذه الطريقة تكون فيها الAPI مجرد عبّارة بين الويب و الخدمات الداخلية كقواعد البيانات وهذي اسوأ انواع الAPI.
الResource يفترض ان تكون شيء اشبه بالUse Case شيء ذو معنى اقرب للبزنس. و الأسوا عمل شيء مثل /Customer/Order هناك انت كشفت مخطط قواعد بياناتك. يفترض بالResource ان تكون عبارة عن عملية Process بدل ان تكتب /User و تضع Post لانشاء يوزر اكتب اسم عملية مثل Registration.
ايضاً REST هي representation (تمثيل) للresource و ليست الResource نفسه فمثلاً يمكن تعرض سعر الذهب مثلاً بText او حتى بصورة حسب الContent-Type. اذاً فالResource شيء و طريقة عرضه شيء اخر.
نعود للHypermedia. تخيل موقع الكتروني لا توجد هناك روابط links في صفحته الرئيسية. لكن صاحب الموقع يرسل لك دليل استخدام فيه قائمة بجميع الURL التي تحتاجها للتنقل بين الصفحات! هل هذا مقبول؟
هذا بالمختصر هو الHypermedia هي دليل للتنقل. قائمة من الUri تظهر كLinks مع كل Response.
الشركات الكبيرة تعرف معنى ذلك فمثلاً Twillio عندما اسمت الAPI الخاص بها كـ RESTful Web API فهي تعنيه و تستحقه لانها طبقت الHypermeida او ما يسمى اختصاراً ب HATEOAS كما في الرابط التالي.
#hypermedia" target="_blank" rel="noopener" onclick="event.stopPropagation()">twilio.com
مع أن الapi مقبول بدون Hypermedia لكنه وقتها يصبح مجرد REST Web Service و ليس RESTful Web API الذي يجب ان يكون على Level3 على مقياس Richardson Maturity لنضوج الAPI. في الرابط مقال لمارتن فاولر عنه.
انتهى.
martinfowler.com

جاري تحميل الاقتراحات...