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

معمارية RESTful API: مفهومها وكيفية استخدامها في تطوير الواجهات البرمجية

Muhannad Bahurmoz

السؤال

السلام عليكم و رحمة الله و بركاته,

كل عام وانتم بخير بمناسبة عيد الأضحى, 

لدي استفسار بخصوص مهارة REST API, في بعض الأحيان أرى مطورين يكتبون في سيرتهم الذاتية أو في Linkedin أن لديهم مهارة REST API, ما هي هذه المهارة

بحثت كثيرًا عنها وفهمت معناها, ولكن لم افهم ماذا يفعل المطور الذي يمتلك مهارة REST API ؟!

هل هو الذي يطور في طرف العميل و يتعامل مع ال API أم هو الذي يطور في طرف الخادم و ينشئ ال API نفسها أو يطورها ؟

وشكرًا لكم

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

ببساطة مهارة REST API أو RESTful API تعني قدرتك على تصميم وتطوير وتفهم واجهات برمجة التطبيقات (API) باستخدام نمط REST (Representational State Transfer). REST هو نمط معماري يستخدم في تطوير الويب للتواصل بين العميل (Client) والخادم (Server) من خلال استخدام مجموعة من الأساليب المحددة مثل GET وPOST وPUT وDELETE.

ويستند REST إلى مجموعة من المبادئ والقيود التي تسهل الاتصال والتفاعل بين العميل والخادم:

  1. تمثيل الموارد (Resources): يتم تمثيل البيانات والموارد في النظام عن طريق معرفات فريدة (مثل عناوين URL) ويتم الوصول إليها والتعامل معها عن طريق طلبات HTTP.
  2. واجهات معيارية (Standardized Interfaces): يستخدم REST مجموعة من طرق الطلبات المعيارية في HTTP مثل GET وPOST وPUT وDELETE للتفاعل مع الموارد.
  3. إنعدام الحالة (Stateless): كل طلب منفصل بذاته ولا يتم تخزين حالة العميل على الخادم بين الطلبات، وترسل كافة المعلومات اللازمة للخادم في كل طلب.
  4. التفاعل المستقل (Self-contained Interactions): تشمل طلبات REST كل المعلومات اللازمة لإجراء العملية المطلوبة، بما في ذلك أي بيانات إضافية أو تعليمات مطلوبة.
  5. التوجيه المحدود (Limited Coupling): يعتمد REST على فصل العميل والخادم بشكل مستقل، ولا يعتمد على المعرفة المسبقة للعميل بشأن تفاصيل الخادم، وبالعكس.

أي من يمتلك مهارة REST API قادر على العمل في كلا الجانبين: جانب العميل وجانب الخادم. وفيما يلي توضيح للدورين:

1- جانب العميل (Client-side)

  • يطور تطبيق أو موقع ويب يتفاعل مع API الخادم.
  • يستخدم طلبات HTTP المختلفة مثل GET وPOST للتواصل مع الخادم.
  • يقوم ببناء واجهة المستخدم (UI) لعرض البيانات المستردة من الخادم باستخدام بيانات المستجيبة التي تم تلقيها عبر API.

2- جانب الخادم (Server-side)

  • ينشئ API باستخدام تقنيات RESTful للسماح للعملاء بالتواصل مع البيانات والخدمات التي يقدمها الخادم.
  • يعمل على تصميم وتطوير واجهات البرمجة API التي توفر الوصول إلى مجموعة محددة من البيانات أو العمليات.
  • ينشئ نماذج البيانات ويحدد طرق الوصول إلى هذه البيانات بما يتوافق مع مبادئ REST.

وفي العمل، يمكن للمبرمجين أن يكونوا متخصصين في جانب واحد من REST API، مثل مطوري الواجهة الأمامية (Front-end Developers) الذين يتعاملون بشكل رئيسي مع API الخادم على الطرف العميل، أو مطوري الخادم (Back-end Developers) الذين ينشئون ويديرون ال API نفسها على الطرف الخادم. 

وإليك مثال لكود JavaScript يوضح كيفية تنفيذ REST API لمصادر المستخدمين باستخدام إطار عمل Express.js أي في الواجهة الخلفية:

const express = require('express');
const app = express();

// بيانات المستخدمين المؤقتة
let users = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' }
];

// استرداد جميع المستخدمين
app.get('/users', (req, res) => {
  res.json(users);
});

// إنشاء مستخدم جديد
app.post('/users', (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name
  };
  users.push(newUser);
  res.status(201).json(newUser);
});

// تشغيل الخادم
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

أما التعامل مع REST API في الواجهة الأمامية فهو كالتالي:

// استدعاء API لاسترداد جميع المستخدمين
async function getUsers() {
  try {
    const response = await fetch('/users');
    const data = await response.json();
    // استخدام البيانات المستلمة
    console.log(data); // يتم طباعة المستخدمين في وحدة التحكم
  } catch (error) {
    console.error('Error:', error);
  }
}

// استدعاء API لإنشاء مستخدم جديد
async function createUser() {
  const newUser = {
    name: 'Alice'
  };

  try {
    const response = await fetch('/users', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(newUser)
    });
    const data = await response.json();
    // استخدام البيانات المستلمة
    console.log(data); // يتم طباعة المستخدم الجديد في وحدة التحكم
  } catch (error) {
    console.error('Error:', error);
  }
}

// استدعاء الدوال المحددة
getUsers();
createUser();

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

  • معمارية SOAP (Simple Object Access Protocol): تستخدم في تطوير واجهات برمجة التطبيقات المبنية على نمط XML وتتطلب بروتوكولات معقدة للتواصل.
  • معمارية GraphQL: تسمح للعميل بتحديد البيانات المحددة التي يُرغب في استردادها، مما يزيد من كفاءة استرداد البيانات ويقلل من حمولة الشبكة.
  • معمارية gRPC: تعتمد على نمط RPC (Remote Procedure Call) للتواصل بين العميل والخادم، وتستخدم تسلسل البيانات بتنسيق Protocol Buffers.

 

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

  • 0

دعنا نشرح بعض الامور لتسهل فهم الـ REST،

API هو اختصار لـ “واجهة برمجة التطبيقات” (Application Programming Interface) وهي مجموعة من الإجراءات والبروتوكولات والأدوات التي يتم توفيرها من قبل الخادم (backend) للسماح للتطبيقات الأخرى بالتفاعل معه. يمكن لـ API تحديد الطريقة التي يمكن للتطبيقات التفاعل بها مع بعضها البعض وتبادل البيانات والمعلومات (أي انه هنالك عدة انواع للـ APIs).

"النمط المعماري لبناء API" وهو يشير إلى المبادئ التوجيهية والقواعد التي يتم اتباعها عند تصميم API. يحدد النمط المعماري كيفية تنظيم الموارد (التي قد تكون قاعدة بيانات مثلاً) وكيفية التفاعل معها من خلال الطلبات والردود.

REST هو أحد الأنماط المعمارية الشائعة لبناء الـ APIs، وهو يستخدم مجموعة من المبادئ التوجيهية لإنشاء خدمات ويب قائمة على الموارد والتي يمكن الوصول إليها عبر HTTP.

مثلاً عند انشاء الخوادم بطريقة REST فإننا نقوم بإنشاء routes مختلفة لأداء وظائف مختلفة، مثل إنشاء route لطلب اسماء المستخدمين و route لنشر تعليق و route لتسجيل الدخول و route للتسجيل في الموقع ..إلخ وكل واحد من هذه العمليات سوف يؤثر على قاعدة البيانات الخاصة بالتطبيق ليضيف أو يحذف أو يعدل بيانات ...إلخ، وهذه امثل على بعض هذه الـ routes :

https://server.com/login
https://server.com/register
https://server.com/new_comment

وهذه بعض المبادئ التي تميز الـ REST API عن غيرها من البروتوكولات :

 

  1. العنونة الموحدة للموارد (Uniform Resource Identifier): يجب أن يتم تعريف كل مورد بشكل فريد باستخدام عنوان URI (في الامثلة السابقة قمنا بإنشاء route لكل وظيفة).

  2. العمليات القياسية (Standard Operations): يجب أن تستخدم طرق HTTP القياسية (مثل GET و POST و PUT و DELETE) للتفاعل مع الموارد (بروتوكول للتواصل بين واجهة المستخدم والخادم).

  3. تمثيل أو نوع الموارد (Resource Representations): يجب أن يتم تمثيل الموارد بشكل مستقل عن التنسيق الذي يتم استخدامه لتبادل البيانات (مثل XML أو JSON).

  4. الاتصالات عديمة السياق (Stateless Communications): يجب أن تكون كل طلب من العميل إلى الخادم كاملاً بحيث يمكن للخادم فهمه دون الحاجة إلى معلومات إضافية من طلبات سابقة.

بعد قول ذلك فهناك بعض البروتوكولات البديلة لـ REST مثل GraphQL.

في النهاية فإن الـ REST هي وظيفة الـ backend بكل وضوح حيث انه هو من سيقوم بإنشائها، ولكن على مطور الواجهة الأمامية أن يعرف كيف يتعامل مع هذه الـ APIs ويرسل الطلبات الصحيحة إلى backend، فمطور الواجهة قد يتعامل مع APIs من أنواع عديدة واشهرها هو الـ REST وعليه أن يكون على معرفة كافية في التعامل معها.

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

  • 0

ببساطة حتى لا يتم تعقيد الموضوع  مطور REST API هو المطور الذي يعمل على جانب الخادم ويقوم ببناء وتطوير وصيانة API المبنية على أساسيات REST.

REST هو أسلوب في بناء الواجهات البرمجية لتطبيقات الويب. ويعتمد على استخدام بروتوكول HTTP للتواصل بين الأنظمة. فالمطور يقوم بتحديد طرق HTTP مثل GET و POST و PUT و DELETE وربط كل طريقة بمورد معين. كما يقوم بتحديد كيفية معالجة كل طلب وإرجاع استجابة مناسبة.

إذاً المطور الذي يمتلك مهارة REST API هو:

  • ملم بأساسيات بروتوكول HTTP وطرقه.
  • قادر على تصميم هيكلية نظام REST API بالشكل الصحيح.
  • يستطيع بناء API باستخدام إحدى تقنيات بناء API مثل ASP.NET Web API أو Spring Boot أو Node.js Express وغيرها.
  • قادر على وضع التوثيق المناسب للـ API ليستخدمها المطورون الآخرون.
  • ملم بأفضل الممارسات لبناء وتأمين REST API.
  • قادر على صيانة وتطوير الـ API وإدارة دورات حياتها.
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

وعليكم السلام و رحمة الله وبركاته .

بالنسبة لل API

المصدر .

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

الجزء الأول : مفهوم واجهات برمجة التطبيقات (API)

 

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

واجهات برمجة التطبيقات تعتمد على مجموعة من البروتوكولات وتنسيقات البيانات المعينة مثل JSON (JavaScript Object Notation) وXML (eXtensible Markup Language) لتمكين تبادل البيانات بين التطبيقات. يتم توثيق واجهات البرمجة بشكل جيد لتوفير تعليمات ووثائق واضحة حول كيفية استخدامها وتنسيقات البيانات المتوقعة.

download.png

الجزء الثاني: أهمية واجهات برمجة التطبيقات (API

 

تعتبر واجهات برمجة التطبيقات (API) جزءًا أساسيًا من البنية التحتية لتطوير التطبيقات الحديثة والمتكاملة. وفيما يلي بعض أهمية API:

1. تبسيط التكامل: تساعد واجهات

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

2. تعزيز الإنتاجية :

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

3. توسيع نطاق الوصول :

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

الجزء الثالث: أنواع واجهات برمجة التطبيقات (API)

 

توجد عدة أنواع مختلفة من واجهات برمجة التطبيقات (API)، من بينها:

1. واجهات الويب (Web APIs) :

 تستخدم لتمكين التواصل بين التطبيقات عبر الإنترنت. تعتمد على بروتوكولات HTTP وتستخدم تنسيقات البيانات مثل JSON أو XML لتبادل البيانات.

2. واجهات النظام (System APIs) :

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

3. واجهات الوسائط الاجتماعية (Social Media APIs) :

 توفر واجهات الوسائط الاجتماعية مثل Facebook وTwitter و Google برمجيات تطوير التطبيقات للسماح للمطورين بالوصول إلى ميزات الشبكات الاجتماعية والتفاعل معها.

4. واجهات الخدمات السحابية (Cloud APIs) :

 تمكن من الوصول إلى خدمات الحوسبة السحابية مثل التخزين والمعالجة والتحليل. تساعد في توسيع قدرات التطبيقات والوصول إلى موارد السحابة.

الاستنتاج :

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

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

في النهاية، يجب على المطورين أن يستغلوا فوائد واجهات برمجة التطبيقات لتحسين التكامل والتعاون بين التطبيقات وتحقيق تجارب مستخدم متميزة في عالم التطبيقات الحديث.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...