ما هي API؟ باللغة الإنجليزية لو سمحت.

قبل أن أتعلم تطوير البرمجيات ، بدت API وكأنها نوع من البيرة.

اليوم أستخدم المصطلح كثيرًا لدرجة أنني حاولت مؤخرًا طلب واجهة برمجة تطبيقات في حانة.

كان رد النادل هو إلقاء 404: المورد غير موجود.

قابلت الكثير من الأشخاص ، سواء العاملين في مجال التكنولوجيا أو في أي مكان آخر ، ممن لديهم فكرة غامضة أو غير صحيحة حول معنى هذا المصطلح الشائع إلى حد ما.

من الناحية الفنية ، فإن API تعني واجهة برمجة التطبيقات . في مرحلة ما أو أخرى ، قامت معظم الشركات الكبيرة ببناء واجهات برمجة تطبيقات لعملائها ، أو للاستخدام الداخلي.

ولكن كيف تفسر API بلغة إنجليزية بسيطة؟ وهل هناك معنى أوسع من المعنى المستخدم في التطوير والأعمال؟ أولاً ، دعنا نتراجع ونلقي نظرة على كيفية عمل الويب نفسه.

WWW والخوادم البعيدة

عندما أفكر في الويب ، أتخيل شبكة كبيرة من الخوادم المتصلة .

يتم تخزين كل صفحة على الإنترنت في مكان ما على خادم بعيد. الخادم البعيد ليس غامضًا بعد كل شيء - إنه مجرد جزء من جهاز كمبيوتر موجود عن بُعد تم تحسينه لمعالجة الطلبات.

لوضع الأمور في نصابها ، يمكنك تشغيل خادم على الكمبيوتر المحمول قادر على تقديم موقع ويب كامل إلى الويب (في الواقع ، الخادم المحلي هو ما يستخدمه المهندسون لتطوير مواقع الويب قبل إطلاقها للجمهور).

عندما تكتب www.facebook.com في متصفحك ، يتم إرسال طلب إلى خادم Facebook البعيد. بمجرد أن يتلقى المستعرض الاستجابة ، فإنه يفسر الرمز ويعرض الصفحة.

بالنسبة للمتصفح ، المعروف أيضًا باسم العميل ، فإن خادم Facebook هو واجهة برمجة تطبيقات. هذا يعني أنه في كل مرة تزور فيها صفحة على الويب ، فإنك تتفاعل مع بعض واجهة برمجة تطبيقات الخادم البعيد.

واجهة برمجة التطبيقات ليست مثل الخادم البعيد - بل هي جزء من الخادم يتلقى الطلبات ويرسل الردود .

واجهات برمجة التطبيقات كوسيلة لخدمة عملائك

ربما سمعت عن شركات تقوم بتعبئة واجهات برمجة التطبيقات كمنتجات. على سبيل المثال ، تبيع Weather Underground إمكانية الوصول إلى واجهة برمجة تطبيقات بيانات الطقس الخاصة بها.

سيناريو مثال: يحتوي موقع الويب الخاص بشركتك الصغيرة على نموذج يستخدم لتسجيل العملاء في المواعيد. تريد منح عملائك القدرة على إنشاء حدث تقويم Google تلقائيًا بتفاصيل ذلك الموعد.

استخدام واجهة برمجة التطبيقات (API): الفكرة هي جعل خادم موقع الويب الخاص بك يتحدث مباشرة إلى خادم Google مع طلب لإنشاء حدث مع التفاصيل المحددة. سيتلقى خادمك بعد ذلك استجابة Google ومعالجتها وإعادة إرسال المعلومات ذات الصلة إلى المتصفح ، مثل رسالة تأكيد إلى المستخدم.

بدلاً من ذلك ، يمكن لمتصفحك في كثير من الأحيان إرسال طلب API مباشرة إلى خادم Google متجاوزًا الخادم الخاص بك.

كيف تختلف واجهة برمجة تطبيقات تقويم Google هذا عن واجهة برمجة التطبيقات لأي خادم بعيد آخر موجود؟

من الناحية الفنية ، الاختلاف هو تنسيق الطلب والاستجابة.

لعرض صفحة الويب بالكامل ، يتوقع المستعرض الخاص بك استجابة بتنسيق HTML ، والتي تحتوي على رمز عرضي ، في حين أن استدعاء واجهة برمجة تطبيقات تقويم Google سيعيد البيانات - على الأرجح بتنسيق مثل JSON .

إذا كان خادم موقع الويب الخاص بك يقوم بطلب واجهة برمجة التطبيقات ، فإن خادم موقع الويب الخاص بك هو العميل (على غرار متصفحك كونه العميل عند استخدامه للانتقال إلى موقع ويب).

من منظور المستخدمين لديك ، تسمح واجهات برمجة التطبيقات لهم بإكمال الإجراء دون مغادرة موقع الويب الخاص بك.

تستهلك معظم مواقع الويب الحديثة على الأقل بعض واجهات برمجة التطبيقات التابعة لجهات خارجية.

العديد من المشاكل لها بالفعل حل من طرف ثالث ، سواء كان ذلك في شكل مكتبة أو خدمة. غالبًا ما يكون استخدام حل موجود أسهل وأكثر موثوقية.

ليس من غير المألوف أن تقوم فرق التطوير بتقسيم تطبيقاتهم إلى خوادم متعددة تتحدث مع بعضها البعض عبر واجهات برمجة التطبيقات. يشار إلى الخوادم التي تؤدي وظائف مساعدة لخادم التطبيق الرئيسي باسم الخدمات المصغرة .

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

هل يمكنك تقديم هذه الطلبات من خلال متصفحك؟ في كثير من الأحيان ، نعم. نظرًا لأن نقل HTTP الفعلي يحدث في شكل نص ، فإن متصفحك سيفعل دائمًا ما في وسعه لعرض الاستجابة.

على سبيل المثال ، يمكنك الوصول إلى واجهة برمجة تطبيقات GitHub مباشرة باستخدام متصفحك دون الحاجة إلى رمز وصول. إليك استجابة JSON التي تحصل عليها عندما تزور مسار واجهة برمجة تطبيقات مستخدم GitHub في متصفحك (//api.github.com/users/petrgazarov):

{ "login": "petrgazarov", "id": 5581195, "avatar_url": "//avatars.githubusercontent.com/u/5581195?v=3", "gravatar_id": "", "url": "//api.github.com/users/petrgazarov", "html_url": "//github.com/petrgazarov", "followers_url": "//api.github.com/users/petrgazarov/followers", "following_url": "//api.github.com/users/petrgazarov/following{/other_user}", "gists_url": "//api.github.com/users/petrgazarov/gists{/gist_id}", "starred_url": "//api.github.com/users/petrgazarov/starred{/owner}{/repo}", "subscriptions_url": "//api.github.com/users/petrgazarov/subscriptions", "organizations_url": "//api.github.com/users/petrgazarov/orgs", "repos_url": "//api.github.com/users/petrgazarov/repos", "events_url": "//api.github.com/users/petrgazarov/events{/privacy}", "received_events_url": "//api.github.com/users/petrgazarov/received_events", "type": "User", "site_admin": false, "name": "Petr Gazarov", "company": "PolicyGenius", "blog": "//petrgazarov.com/", "location": "NYC", "email": "[email protected]", "hireable": null, "bio": null, "public_repos": 23, "public_gists": 0, "followers": 7, "following": 14, "created_at": "2013-10-01T00:33:23Z", "updated_at": "2016-08-02T05:44:01Z"}

يبدو أن المتصفح قد قام بعرض استجابة JSON بشكل جيد. استجابة JSON مثل هذه جاهزة للاستخدام في التعليمات البرمجية الخاصة بك. من السهل استخراج البيانات من هذا النص. ثم يمكنك أن تفعل ما تريد بالبيانات.

A هو "التطبيق"

للإغلاق ، دعنا نلقي ببعض الأمثلة الأخرى لواجهات برمجة التطبيقات.

يمكن أن يشير "التطبيق" إلى أشياء كثيرة. فيما يلي بعض منها في سياق API:

  1. قطعة برمجية بوظيفة مميزة.
  2. الخادم بأكمله ، أو التطبيق بأكمله ، أو جزء صغير من التطبيق.

بشكل أساسي ، يمكن أن يكون أي جزء من البرامج يمكن فصله بشكل مميز عن بيئته "A" في واجهة برمجة التطبيقات ، وربما يحتوي أيضًا على نوع من واجهة برمجة التطبيقات.

لنفترض أنك تستخدم مكتبة جهة خارجية في التعليمات البرمجية الخاصة بك. بمجرد دمجها في التعليمات البرمجية الخاصة بك ، تصبح المكتبة جزءًا من تطبيقك العام. نظرًا لكونها جزءًا متميزًا من البرامج ، فمن المحتمل أن تحتوي المكتبة على واجهة برمجة تطبيقات تسمح لها بالتفاعل مع بقية التعليمات البرمجية الخاصة بك.

إليك مثال آخر: في التصميم الموجه للكائنات ، يتم تنظيم الكود في كائنات. قد يحتوي التطبيق الخاص بك على مئات العناصر المحددة التي يمكنها التفاعل مع بعضها البعض.

يحتوي كل كائن على واجهة برمجة تطبيقات (API) - مجموعة من الأساليب والخصائص العامة التي يستخدمها للتفاعل مع الكائنات الأخرى في تطبيقك.

قد يكون للكائن أيضًا منطق داخلي يكون خاصًا ، مما يعني أنه كذلكمخفيمن النطاق الخارجي (وليس API).

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

موارد مثيرة للاهتمام (أشياء تركتها لكنها لا تزال رائعة جدًا):

فيديو يوتيوب رائع على DNS (نظام اسم المجال)

أساسيات بروتوكول HTTP

فيديو رائع من أكاديمية خان حول مبادئ التصميم الموجه للكائنات