0Pricing
AWS Solutions Architect · درس

REST API مقابل HTTP API مقابل WebSocket API

تعرّفوا إلى المفاضلات بين REST API الغني بالميزات وHTTP API منخفض زمن الاستجابة والتكلفة وWebSocket API ثنائي الاتجاه، واختاروا الخيار المناسب.

REST API مقابل HTTP API مقابل WebSocket API درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

لماذا توجد API Gateway

Amazon API Gateway هي خدمة مُدارة بالكامل تتيح لك إنشاء واجهات API ونشرها وتأمينها ومراقبتها مهما كان حجمها. وهي تعمل بوصفها الواجهة الأمامية لخدماتك الخلفية—مثل وظائف Lambda أو مثيلات EC2 أو الخلفيات المستندة إلى HTTP أو أي خدمة من AWS. تتولى API Gateway إدارة حركة المرور والتفويض وتحديد المعدل والمراقبة وإصدارات API، بحيث تركز الواجهة الخلفية على منطق الأعمال بدلًا من الانشغال بمخاوف البنية التحتية لواجهات API.

REST API: واجهة API تقليدية غنية بالميزات

توفر REST API (منتج API Gateway الأصلي) أوسع مجموعة من الميزات: تحويل الطلبات والاستجابات باستخدام قوالب التعيين، وتحديد المعدل لكل طريقة، وخطط الاستخدام مع مفاتيح API، وتخزين الاستجابات مؤقتًا، والتكامل مع WAF، والتتبع باستخدام X-Ray، وسياسات الموارد، وTLS متبادل باستخدام شهادات العميل. تدعم REST APIs جميع أنواع التكامل: Lambda وHTTP وخدمة AWS وMock وLambda Proxy. استخدم REST API عندما تحتاج إلى ميزات متقدمة مثل التحويل أو التخزين المؤقت أو خطط الاستخدام.

HTTP API: بديل منخفض الكمون والتكلفة

صُممت HTTP API لتكون بديلًا أبسط وأقل تكلفة وأسرع من REST API. وهي تدعم تكاملَي Lambda proxy وHTTP proxy فقط—ولا تدعم تكاملات خدمات AWS أو Mock. ومن مزاياها الرئيسية: تكلفة أقل بنسبة تصل إلى 70% من REST API، وكمون أقل، وتفويض JWT مضمّن أصليًا باستخدام OIDC وOAuth 2.0 (من دون الحاجة إلى Lambda authoriser في سيناريوهات المصادقة الشائعة)، والنشر التلقائي. إذا لم تكن بحاجة إلى التخزين المؤقت أو خطط الاستخدام أو تحويل الطلبات والاستجابات، فستكون HTTP API الخيار الأفضل.

# Create a simple HTTP API
aws apigatewayv2 create-api \
  --name 'MyHttpAPI' \
  --protocol-type HTTP \
  --target 'arn:aws:lambda:us-east-1:123456789012:function:MyLambda'

WebSocket API: اتصال ثنائي الاتجاه في الوقت الفعلي

تحافظ WebSocket API على اتصالات مستمرة وثنائية الاتجاه بين العملاء والخادم. وعلى خلاف HTTP (الطلب والاستجابة)، تتيح WebSocket للخادم دفع الرسائل إلى العملاء المتصلين في أي وقت دون أن يضطر العميل إلى إجراء الاستطلاع. تدير API Gateway اتصالات WebSocket وتوجّه الرسائل إلى وظائف Lambda استنادًا إلى تعبيرات المسارات. استخدم WebSocket APIs للتطبيقات الفورية مثل تطبيقات الدردشة ولوحات المعلومات المباشرة والتحرير التعاوني والألعاب ومؤشرات أسعار الأسهم.

مسارات WebSocket وإدارة الاتصالات

تحتوي WebSocket APIs على ثلاثة مسارات مضمّنة: $connect (يُشغّل عند فتح العميل اتصالًا)، و$disconnect (يُشغّل عند إغلاق اتصال)، و$default (يلتقط الرسائل غير المطابقة). ويمكنك إضافة مسارات مخصصة مثل sendmessage وربطها بوظائف Lambda محددة. استخدم واجهة إدارة @connections لإرسال الرسائل مرة أخرى إلى العملاء المتصلين من وظيفة Lambda، وذلك باستخدام معرّف الاتصال الخاص بالعميل.

# Send a message to a specific WebSocket client from Lambda
import boto3

gw_client = boto3.client(
    'apigatewaymanagementapi',
    endpoint_url='https://abc123.execute-api.us-east-1.amazonaws.com/prod'
)

def lambda_handler(event, context):
    connection_id = event['requestContext']['connectionId']
    gw_client.post_to_connection(
        Data='{"type": "message", "text": "Hello!"}',
        ConnectionId=connection_id
    )

مقارنة الميزات: REST مقابل HTTP مقابل WebSocket

أبرز الفروقات باختصار:

  • REST API: ميزات كاملة (التخزين المؤقت، وخطط الاستخدام، والتحويلات، وWAF)، وتكلفة أعلى، وتدعم جميع أنواع التكامل
  • HTTP API: تدعم Lambda/HTTP proxy فقط، وتكلفتها أقل بنسبة 70%، وتوفر مصادقة JWT مضمّنة، وكمونًا أقل، ولا توفر تخزينًا مؤقتًا أو خطط استخدام
  • WebSocket API: اتصالات ثنائية الاتجاه مستمرة، وتدعم دفع الخادم، وتُحتسب تكلفتها لكل مليون رسالة ولكل دقيقة من زمن الاتصال

بالنسبة إلى اختبار SAA-C03: أسئلة HTTP التي لا تتضمن ميزات فورية أو متقدمة ← HTTP API. الدفع الفوري من الخادم ← WebSocket. ميزات API المعقدة ← REST API.

المراحل وعمليات النشر

تُنشر واجهات API في API Gateway إلى مراحل (مثل dev وstaging وprod). ولكل مرحلة عنوان URL وإعدادات خاصة لتحديد المعدل، ويمكنها الإشارة إلى لقطة نشر محددة. استخدم متغيرات المرحلة (المشابهة لمتغيرات البيئة) لتحديد نقاط النهاية الخلفية لكل مرحلة—فعلى سبيل المثال، يمكنك توجيه مرحلة dev إلى اسم مستعار لـ Lambda خاص بالتطوير، ومرحلة prod إلى الاسم المستعار الخاص بالإنتاج، من دون تكرار إعدادات API.

# REST API: create a deployment and stage
aws apigateway create-deployment \
  --rest-api-id 'abc123' \
  --stage-name 'prod'

# Set stage variable
aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations 'op=replace,path=/variables/lambdaAlias,value=prod'

أسماء النطاقات المخصصة وتعيينات المسارات الأساسية

تحتوي عناوين URL الخاصة بـ API Gateway افتراضيًا على معرّف API (مثل abc123.execute-api.us-east-1.amazonaws.com). وللاستخدام في الإنتاج، أنشئ اسم نطاق مخصص مدعومًا بشهادة ACM، وعيّنه إلى API والمرحلة الخاصة بك. استخدم تعيينات المسارات الأساسية لاستضافة عدة واجهات API ضمن نطاق واحد (مثل api.example.com/orders → Orders API، وapi.example.com/users → Users API). تتطلب أسماء النطاقات المخصصة سجل اسم مستعار في Route 53 يشير إلى نقطة نهاية API Gateway.

واجهات API المحسّنة للحافة مقابل الإقليمية مقابل الخاصة

يمكن نشر REST APIs باستخدام ثلاثة أنواع من نقاط النهاية: Edge-Optimised (واجهة أمامية من CloudFront للتوزيع العالمي، وهي الإعداد الافتراضي)، وRegional (من دون CloudFront، مع كمون أقل للعملاء في المنطقة نفسها أو عند إضافة CloudFront الخاص بك)، وPrivate (لا يمكن الوصول إليها إلا من داخل VPC باستخدام نقطة نهاية VPC للواجهة، وذلك للخدمات المصغّرة الداخلية). تدعم HTTP APIs النوعين Edge-Optimised وRegional. وتدعم WebSocket APIs النوعين Regional وPrivate. اختر Regional لواجهات API التي يستهلكها عملاء من المنطقة نفسها أو عند استخدام توزيعات CloudFront مخصصة.

عمليات النشر التدريجي باستخدام API Gateway

تدعم REST APIs في API Gateway عمليات النشر التدريجي على مستوى المرحلة. ويمكنك توجيه نسبة مئوية من حركة المرور إلى عملية نشر تدريجية (الإصدار الجديد)، بينما تُوجَّه بقية الحركة إلى عملية نشر الإنتاج. راقب معدلات الأخطاء والكمون في النشر التدريجي؛ وإذا كان مستقرًا، فقم بترقيته إلى 100%. وإذا ظهرت مشكلات، فتراجع عنه بتعيين وزن النشر التدريجي إلى 0. يشبه ذلك التوجيه الموزون باستخدام الأسماء المستعارة في Lambda، ويتيح تحديثات آمنة وتدريجية لواجهات API من دون التبديل بين بيئتَي blue/green.

اختيار نوع API المناسب للاختبار

الكلمات المفتاحية في أسئلة اختبار SAA-C03 لتحديد نوع API: 'cost-effective simple API' → HTTP API؛ 'real-time bidirectional' أو 'server push' أو 'chat' → WebSocket API؛ 'request transformation' أو 'usage plans' أو 'API key throttling' أو 'response caching' → REST API. عندما يكون السؤال ببساطة «إتاحة Lambda كنقطة نهاية HTTP منخفضة التكلفة»، تكون HTTP API هي الخيار الأفضل. وعندما يتضمن السؤال ميزات معقدة لإدارة API أو شركاء، تكون REST API عادةً هي الإجابة الصحيحة.

تحقق سريع

اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلّمت في هذا الدرس أن REST API توفر مجموعة ميزات API Gateway الكاملة (التخزين المؤقت والتحويلات وخطط الاستخدام وWAF) بتكلفة أعلى، وأن HTTP API أقل تكلفة بنسبة 70%، مع مصادقة JWT مضمّنة وكمون أقل، ما يجعلها مثالية لسيناريوهات Lambda/HTTP proxy التي لا تتطلب ميزات متقدمة، وأن WebSocket API تتيح اتصالًا فوريًا مع دفع الخادم عبر اتصالات مستمرة لتطبيقات الدردشة والألعاب والبيانات المباشرة. بعد ذلك سنستكشف تكاملات API Gateway مع Lambda والخلفيات المستندة إلى HTTP والاستجابات الوهمية.

الأسئلة الشائعة

هل درس «REST API مقابل HTTP API مقابل WebSocket API» مجاني؟

نعم — نص درس «REST API مقابل HTTP API مقابل WebSocket API» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

ماذا ستتعلم في «REST API مقابل HTTP API مقابل WebSocket API»؟

تعرّفوا إلى المفاضلات بين REST API الغني بالميزات وHTTP API منخفض زمن الاستجابة والتكلفة وWebSocket API ثنائي الاتجاه، واختاروا الخيار المناسب. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟

لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «REST API مقابل HTTP API مقابل WebSocket API»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟

نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. REST API مقابل HTTP API مقابل WebSocket API
  2. التكاملات: Lambda وHTTP وMock
  3. التفويض: IAM وLambda Authorizers وCognito
  4. التقييد والتخزين المؤقت وخطط الاستخدام
← العودة إلى AWS Solutions Architect