
تستطيع معرفة حالة الطقس من خلال جوالك، لانه يقوم باستهلاك خدمة ويب حالة الطقس من مزود هذه الخدمة
باختصار
خدمات الويب او Web Services هي آلية لمشاركة خوارزميات أو مصادر بيانات معينة، بحيث نقوم باستهلاك هذه المصادر في تطوير تطبيقات اخرى دون عناء تطوير هذه الخوارزميات.
من هي الجهات التي تقدم خدمات الويب؟
أنت أو أنا أو أي جهة في أخرى، لديها بيانات تستطيع مشاركتها مع غيرها، باستطاعتها عرض هذه الخدمات، وتمكين آلية للمستخدمين للوصول إليها.
تقنياً، كيف تعمل خدمات الويب؟
سنركز في هذه المقالة بالحديث عن REST API. لانها الأكثر كفاءة والاكثر انتشاراً حالياً، بدايةً جاءت التسمية من المصطلح الانجليزي
Representational State Transfer (REST)
تم تقديم هذا المصطلح لأول مرة في عام 2000 بواسطة عالم الحاسوب الأمريكي روي فيلدنغ.
ويعني ان يتم التواصل مع مصادر البيانات الموجودة على شبكة الانترنت، من خلال شكل الطلب الذي نرسله لها، أي ان كل مصدر للبيانات لديه عنوان مخصص للوصول إليه URL، وطريقة طلب المستخدم لهذا العنوان، هي التي تحدد العملية على هذه المصدر.
مثال:
لو فرضنا بوجود مصدر للبيانات على الويب يحوي على جميع أسماء دول العالم. وكان العنوان المخصص لهذا المصدر بالشكل التالي:
https://www.world.com/api/countries
نلاحظ ان شكل العنوان ليس أكثر من رابط عادي نستخدمه يومياً، وهذا صحيح، وهو ما يمييز خدمات الويب REST API، بإنها تعتمد على بروتوكول HTTP بجميع ميزاته لتقديم الوصول لمصادر البيانات.
الآن لو أردنا طلب قائمة بأسماء دول العالم، سنقوم ببساطة بطلب هذا العنوان (قراءة البيانات التي يقدمها هذا العنوان)، ولكن كيف للسيرفر الذي يحوي على هذه البيانات أن يعرف بأن القصد او الطلب هو قراءة البيانات فقط؟
كما ذكرنا باستخدام بروتوكول HTTP، أي اذا قمنا بطلب هذا العنوان وتحديد طريقة الطلب بأنها GET، فهذا يكفي للخادم ليقوم بالاستجابة لطلبنا بقراءة البيانات، وارسالها لنا.
الآن اصبحت آلية العمل واضحة، يمكننا اجراء باقي العمليات على هذا المصدر (إضافة إسم دولة جديد POST، التعديل على إسم دولة سابقPUT، او حذف إسم موجود مسبقا DELETE، وباستخدام نفس العنوان، لكن شكل الطلب سيتخلف
وهذا صحيح، فبأي حال أنا سأقوم بإرسال طلب HTTP إلى عنوان هذا المصدر، وكما نعلم فإن بروتوكول HTTP يحوي على الكثير من الميزات التي تحدد شكل الطلب، فالفكرة بأن تقوم خدمات الويب بالاستفادة من بروتوكول HTTP بدل تعريف عنواين جديدة لكل عملية تتم على نفس المصدر.
لمحة عن HTTP
بروتوكل HTTP هو آلية للتواصل بين المستخدم والسيرفر، يتكون البروتوكول من قسمين أساسين هما
- Request
- Response
Request
وهي الآلية التي يتم تحديد شكل الطلب فيها كما ذكرنا سابقاً، فمثلاً يمكننا تحديد طريقة الطلب GET, POST, PUT, DELETE, etc، كما يمكننا تحديد اللغة، وتحديد شكل البيانات المرسلة من السيرفر، وتحديد هويتنا في حال كان السيرفر يتطلب ان نكون مسجلين مسبقا، وغيرها، بحيث يمكننا ارسال طلب بكامل المواصفات.
Request URL: https://www.world.com/api/countries
Request Method: GET
Status Code: 200 OK
Remote Address: 12.58.143.20:443
Referrer Policy: no-referrer-when-downgrade
Response
وهي الرد المرسل من السيرفر بناءاً على طلبنا السابق، ويحوي ايضا على مجوعة من البيانات، مثل هل كان الطلب المرسل صحيح ام لا، هل لدينا الصلاحية للوصل لهذا المصدر ام وغيرها.
سنقوم لاحقاً بالتفصيل أكثر في بروتوكل HTTP والعمل على خدمات ويب حقيقة والاستفادة منها في بناء تطبيقات مختلفة.