API Basics pt.3: Data Formats - Arabic


تعرفنا في المقال السابق على Protocol الويب الـ HTTP,  الـ بيتم خلال 4 اجزاء اساسية.

في مقال الحالي, هنتكلم عن الـ Data Format, وهي اللغة المستخدمة للتواصل خلال الويب بين الكمبيوتر, هنتعرف على أشهرهم استخدمآ, وهم الـ JSON والـ XML.

لما اقول كلمة كمبيوتر, انا اقصد الـ Client والـ Server … لان الـ Component Files الخاصة بالـ App مخزنة على أجهزة كمبيوتر.

تقدر تروح للعناوين بسرعة من هنا:

 

Human Communications

الحدود لتبادل البيانات والمعلومات بين البشر محدودة فقط بخيال الإنسان وقدرته على التعبير, صور, كلمات, اصوات إشارات يدوية وعشرات من الطرق الأخرى … المشترك مبين اي طريقة للتواصل بين الانسان هى انها تكون مفهومة بين طرفين التواصل (المُعبر والمُستقبِل)

بالنسبة للكمبيوتر يتم تبادل البيانات في الغالب في صورة Text Format ... اشهر الـ Formats المستخدمة خلال الـ API هي:

  • (JSON (JavaScript Object Notation
  • (XML (Extensible Markup Language

 

JSON

الـ Format الأكثر والأشهر استخدما خلال API ... تكوينها بسيط سهل القراءة والتعامل معاه, شوف المثال التالي:

 

{
    "name": "mohamed",
    "age": 26
}

 

البنية عبارة عن Key و Value ... حيث ان الـ Key مرتبط بقيمة الـ Value, بمعنى للحصول على العمر (26) ... يستخدم الـ Key المسمى age وبيظهرلي القيمة المرتبطة بيه وهي 26 ... مثال, الكود التالي بلغة Python انا بقول هات عُمر الشخص.

 

person = {
    "name": "mohamed",
    "age": 26
}

print(person.get('age'))

 

Associative Array

اسم بيطلق لما يبقى فيه اكتر من قيمة مرتبطة بالـ Key

 

{
  "name": "mohamed",
  "hobbies": ["reading", "listen", "built"],
  "sister": "sara",
  "father": {
    "name": "ayman",
    "phone": "573-111-1111"
  }
}

 

XML

 

<person>
    <name>mohamed</name>
    <hobbies>
        <hobby>reading</hobby>
        <hobby>listen</hobby>
        <hobby>built</hobby>
    </hobbies>
    <sister>sara</sister>
</person>

 

اقرأ شكل الـ XML Format وهتفهمه ... على عكس الـ JSON, الـ XML معقد ... في الغالب هتستخدم الـ JSON اكثر من الـ XML

 

HTTP Header Format

لو الشرح الجاي موضحش هيوضح بالتطبيق آخر المقال, بربط الاتنين الشرح والتطبيق الصورة النهائية توضح.

قبل ما الـ Client يبعت Request للـ Server, لازم يقول نوع اللغة خلال الـ Body باستخدام الـ Header ... تماما زي ما ﻻزم يتم تحديد اللغة بين البشر , مينفعش تتكلم English والمُستقبل يتكلم French ...الـ 2 Header التالين بيقوم بنفس الوظيفة.

 

Content-Type Header

الـ Header ده بستخدم عشان الـ Client يقول لغة البيانات المرسلة (JSON او XML) ... لما الـ Client يبعت للـ Server بيقولو ان لغة الـ Request المبعوتة JSON مثلا, ببيبعت "Content-Type: "application/json ... لما الـ Server يتسلم الـ Request هيعرف ازاي يستخدم انهي لغة لقراءة البيانات وكيفية التعامل معها.

كذلك الامر لما ال Server يبعت Response للـ Client ﻻزم يقول ايه لغة البيانات المرسلة عشان الـ Client يتعامل معها ويقدر يفهمها.

 

Accept Header

سعات الـ Client مش بيفهم غير Format معينة, يعني ممكن يبعت للـ Server الـ Data Format JSON ويبقي عاوز الـ Response من الـ Server يكون بلفة الـ XML ... لتوفير المعلومة دي للـ Server الـ Client بيستخدم ِAccept Header.

التدريب التالي هتوضح فيه افكار الـ HTTP Format Header, خليك فاكر نقطة ان الكمبيوتر لا يقبل التخمين وابدا التدريب.

 

تدريب

طبق الـ Homework ده ... لو مش مستوعب طريقة التطبيق اقراء تجربتي وملاحظاتي ... متكملش للمقال التالي بدون التطبيق على الحالي ... خليك فاكر ان الـ Web Browser الـ بتستخدمه هو الـ Client.

لما تخلص اربط الشرح (HTTP Format Header) وتطبيق التدريب الفكرة النهائية للـ HTTP Format Header هتوضح.

 

تجربتي رقم 1

  • بعت Content-Type header: application/json
  • وبفهم Accept header: application/json
  • الـ Data Format الـ بعتها XML
  • الـ Server رد بـ

 

{
    "status": "error",
    "message": "Unable to process your request because the Content-Type and data format given are not the same."
}

 

تجربتي رقم 2

  • بعت Content-Type header: application/json
  • وبفهم Accept header: application/json
  • الـ Data Format الـ بعتها JSON
  • الـ Server رد بـ 

 

{
    "status": "success",
    # Happy message
    "message": "Oh no! I tawt I taw a puddy tat! That's Sylvester!"
}

 

تجربتي رقم 3

  • بعت Content-Type header: application/json
  • وبفهم Accept header: application/xml
  • الـ Data Format الـ بعتها JSON
  • الـ Server رد بـ 

 

<response>
    <status>
        success
    </status>
    <message>
        You sent Sylvester the cat.
    </message>
</response>

 

تجربتي رقم 4

  • بعت Content-Type header: application/json
  • وبفهم Accept header: application/json
  • الـ Data Format الـ بعتها XML
  • الـ Server رد بـ 

 

{
    "status": "error",
    "message": "Unable to process your request because the Content-Type and data format given are not the same."
}

 

تجربتي رقم 5

  • بعت Content-Type header فاضي
  • وبفهم Accept header: application/json
  • الـ Data Format الـ بعتها JSON
  • الـ Server رد بـ 

 

Oops! You have to choose Content-Type, Accept, and data format in the form above.

 

من الرد الاخير نفهم نقطة ان الـ Communication بين الكمبيوترات لازم يكون كامل لا يقبل التخمين.

 

النهاية

لازم تطبق على المقال عشان تستوعب فكرة التحادث بين الكمبيوتر خلال الـ HTTP وتشوف ازاي الكمبيوتر يشترط تكون الرسالة واضحة تماما بدون أي نوع من التخمين ... حاسس انك مش عارف تطبق اقرأ تجرتي خلال التطبيق وحاول تربط بينها وبين الـ Homework … المهم متكملش للمقال التالي من غير التطبيق العملي ... المقال التالي هنتعرف على حدود استخدام الـ API لحماية البيانات.

المقال التالي: Authentication

مجموعة المقالات كاملة:

 

المراجع
Zapier