التمرين - استكشف أنواع رابط الإدخال والإخراج

مكتمل

في هذا التمرين، نقوم بإنشاء دالة يتم تشغيلها عندما تتلقى طلب HTTP، وتستجيب لكل طلب عن طريق إرجاع رسالة.

وفيما يلي توضيح شامل لما سنؤسسه.

لقطة شاشة لجزء Code and Test تعرض تعليمة برمجية افتراضية لقالب دالة مشغل HTTP.

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

لقطة شاشة لجزء Code and Test تعرض تعليمة برمجية افتراضية لقالب دالة مشغل HTTP.

تمثل المعلمة Requestهي ربط المشغل، والمعلمة Response تشير إلى ربط الإخراج.

قم بإنشاء تطبيق دالة

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

  1. سجّل الدخول إلى مدخل Microsoft Azure باستخدام الحساب الذي استخدمته لتنشيط وضع الحماية.

  2. في قائمة الموارد أو من الصفحة الرئيسية، حدد أنشئ مصدر. يظهر إنشاء جزء مصدر.

  3. في قائمة Create a resource، حدد Compute، وفي قائمة النتائج حدد Function App. قد تحتاج إلى البحث عن Function App في خدمة البحث ونافذة السوق.

  4. حدد Consumption، ثم حدد الزر Select . يظهر جزء Create Function App.

  5. في علامة التبويب "Basics"، أدخل القِيم التالية لكل إعداد.

    الإعداد قيمة ‏‏الوصف
    تفاصيل المشروع
    الاشتراك اشتراك Concierge اشتراك Azure الذي تريد استخدامه لهذا التمرين.
    مجموعة الموارد من القائمة المنسدلة، حدد [sandbox resource group name] مجموعة الموارد لوضع الحماية.
    تفاصيل المثيل
    اسم تطبيق الوظائف أدخل اسمًا فريدًا عالميًا يعرف هذا الاسم تطبيق الوظائف الجديد الخاص بك. الأحرف الصالحة هي a-z، و0-9، و-.
    مكدس وقت التشغيل من القائمة المنسدلة، حدد Node.js تتم كتابة نموذج التعليمات البرمجية في هذه الوحدة النمطية في «JavaScript».
    إصدار اقبل الافتراضي القيمة الافتراضية كافية لهذا التمرين.
    المنطقة من القائمة المنسدلة، حدد location حدد المنطقة الأقرب إليك.
  6. اقبل الإعدادات الافتراضية لجميع الخيارات الأخرى. حدد Review + create للتحقق من صحة الإعدادات، ثم حدد Create لإدارة تطبيق الدالة وتوزيعه.

  7. قد يستغرق النشر بعض الوقت. في عناصر التحكم العامة بجوار اسم حسابك، حدد أيقونة Notifications، وراقب الرسالة Deployment succeeded.

  8. عند اكتمال عملية توزيع دالتك، حدد Go to resource. يظهر الجزء Overview لتطبيق الوظائف خاصتك.

  1. سجّل الدخول إلى "مدخل Azure" باستخدام الحساب نفسه الذي استخدمته في تنشيط بيئة الاختبار المعزولة.

  2. في قائمة الموارد أو من الصفحة الرئيسية، حدد أنشئ مصدر. يظهر إنشاء جزء مصدر.

  3. في قائمة Create a resource، حدد Compute، وفي قائمة النتائج حدد Function App. قد تحتاج إلى البحث عن Function App في خدمة البحث ونافذة السوق.

  4. حدد Consumption، ثم حدد الزر Select . يظهر جزء Create Function App.

  5. في علامة التبويب "Basics"، أدخل القِيم التالية لكل إعداد.

    الإعداد قيمة ‏‏الوصف
    تفاصيل المشروع
    الاشتراك اشتراك Concierge اشتراك Azure الذي تريد استخدامه لهذا التمرين.
    مجموعة الموارد من القائمة المنسدلة، حدد [sandbox resource group name] مجموعة الموارد لوضع الحماية.
    تفاصيل المثيل
    اسم تطبيق الوظائف أدخل اسمًا فريدًا عالميًا يعرف هذا الاسم تطبيق الوظائف الجديد الخاص بك. الأحرف الصالحة هي a-z، و0-9، و-.
    مكدس وقت التشغيل من القائمة المنسدلة، حدد PowerShell Core تمت كتابة قالب التعليمات البرمجية لهذه الوحدة النمطية في PowerShell.
    إصدار اقبل الافتراضي القيمة الافتراضية كافية لهذا التمرين.
    المنطقة من القائمة المنسدلة، حدد location حدد المنطقة الأقرب إليك.
  6. اقبل الإعدادات الافتراضية لجميع الخيارات الأخرى. حدد Review + create للتحقق من صحة إدخالك، ثم حدد Create لإدارة تطبيق الدالة وتوزيعه.

  7. قد يستغرق النشر بعض الوقت. في عناصر التحكم العامة بجوار اسم حسابك، حدد أيقونة Notifications، وراقب الرسالة Deployment succeeded.

  8. عند اكتمال عملية توزيع دالتك، حدد Go to resource. يظهر الجزء Overview لتطبيق الوظائف خاصتك.

تلميح

إذا كنت تواجه مشكلة في العثور على تطبيق وظيفتك في مدخل Microsoft Azure، فتعرف على كيفية إضافة تطبيقات وظيفية إلى مفضلاتك في مدخل Microsoft Azure.

إنشاء وظيفة

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

  1. حدد الزر Create function ضمن Create in Azure portal في علامة التبويب Functions في صفحة Overview.

  2. يظهر جزء Create Function.

    لقطة شاشة لجزء Create Function.

  3. في قسم تحديد قالب ، حدد قالب مشغل HTTP، ثم حدد التالي.

  4. في القسم Template details، تأكد من الإعدادات التالية.

    • في مربع النص Function name ، استخدم الاسم الافتراضي HttpTrigger1. يقوم Azure تلقائياً بإنشاء أسماء فريدة للوظائف التي تقوم بإنشائها. يمكنك اختيار اسم مختلف، ولكن تذكر استخدام أسماء ذات معنى.

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

  5. حدد إنشاء. عند نشر وظيفة المشغل إلى تطبيق الوظائف، يظهر جزء Functions لتطبيق الوظائف الخاص بك، مع سرد HttpTrigger1.

  6. في شريط الأوامر اختر Get function URL. يظهر مربع حوار Get function URL.

  7. في القائمة المنسدلة، حدد default (function key)، وحدد أيقونة Copy to clipboard في نهاية عنوان URL، ثم حدد OK لإغلاق الحوار.

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

    عند استجابة الدالة، يجب أن تشاهد إخراجا مشابها للمثال التالي المعروض في المستعرض لديك.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. أضف سلسلة الاستعلام &name=Joe إلى نهاية عنوان URL. يجب أن يكون عنوان URL الناتج خاصتك مشابهاً للمثال التالي:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

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

    Hello, Joe. This HTTP triggered function executed successfully.
    

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

    رسم توضيحي لمشغل HTTP الافتراضي، يُظهر طلب HTTP ومعلمات ربط الاستجابة.

  11. في مدخل Microsoft Azure، في قائمة Function، حدد Code + Test.

    يظهر الجزء Code + Test لدالتك، ويعرض محتويات الملف index.js. يجب أن تشبه التعليمات البرمجية الافتراضية JavaScript لدالتك المثال التالي.

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: responseMessage
        };
    }
    
  12. دعنا ننظر بإيجاز إلى ملف الوظيفة الآخر، ملف التكوين function.json. بادر بالوصول إلى هذا الملف عن طريق تحديد function.json من القائمة المنسدلة لمسار الملف أعلى كتلة التعليمات البرمجية. يتم عرض بيانات التكوين في قائمة «JSON» التالية.

    {
        "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
            "get",
            "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
      ]
    }
    

    تحتوي هذه الدالة على ربط المشغل المسمى req من النوع httpTrigger، وربط الإخراج المسمى res من النوع http.

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

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

  1. حدد الزر Create function ضمن Create in Azure portal في علامة التبويب Functions في صفحة Overview.

  2. يظهر جزء Create Function.

  3. في قسم تحديد قالب ، حدد قالب مشغل HTTP، ثم حدد التالي.

  4. في القسم Template details، تأكد من الإعدادات التالية.

    • في مربع النص Function name ، استخدم الاسم الافتراضي HttpTrigger1. يوفر Azure تلقائياً اسماً فريداً عند إنشاء دالة. يمكنك اختيار اسم مختلف، ولكن تذكر استخدام أسماء ذات معنى.

    • في مربع النص Authorization level، اقبل القيمة الافتراضية Function. يحدد مستوى التفويض المفاتيح التي يجب أن تكون موجودة في الطلب حتى يتم تشغيله. تتطلب الدالة مفتاحا خاصا بالدالة.

      لقطة شاشة لجزء Add Function.

  5. حدد إنشاء. سيظهر جزء HttpTrigger1 من أجل Function خاصتك.

  6. في شريط الأوامر اختر Get function URL. يظهر مربع حوار Get function URL.

  7. في القائمة المنسدلة، حدد default (function key)، وحدد أيقونة Copy to clipboard في نهاية عنوان URL، ثم حدد OK لإغلاق مربع الحوار.

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

    عند استجابة الدالة، يجب أن تشاهد إخراجا مشابها للمثال التالي المعروض في المستعرض لديك.

    This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
    
  9. أضف سلسلة الاستعلام &name=Joe إلى نهاية عنوان URL. يجب أن يكون عنوان URL الناتج خاصتك مشابهاً للمثال التالي:

    https://example.azurewebsites.net/api/HttpTrigger1?code=AbCdEfGhIjKlMnOpQrStUvWxYz==&name=Joe

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

    Hello, Joe. This HTTP triggered function executed successfully.
    

    كما ترى من هذا التمرين حتى الآن، يجب تحديد المشغل عند إنشاء دالة. كل دالة لها مشغل واحد. في هذا المثال، نستخدم مشغل HTTP، ما يعني أن وظيفتنا تبدأ عندما تتلقى طلب HTTP. التنفيذ الافتراضي من القالب، الموضح في PowerShell في لقطة الشاشة التالية، يستخدم الأمر Push-OutputBinding للاستجابة بقيمة اسم المعلمة التي كانت جزءاً من سلسلة الاستعلام أو نص الطلب. إذا لم يتم توفير سلسلة، تستجيب الوظيفة برسالة تعزز من يقوم بطلب التزويد بقيمة الاسم.

    جزء Code and Test لطلب HTTP يعرضان الاستجابة ومعلمات الربط ذات الصلة.

  11. في قائمة الوظيفة، اختر Code + Test. يظهر جزء Code + Test لوظيفتك، ويعرض محتويات ملف run.ps1.

    يجب أن تشبه التعليمات البرمجية الافتراضية PowerShell لدالتك المثال التالي.

    using namespace System.Net
    
    # Input bindings are passed in via param block.
    param($Request, $TriggerMetadata)
    
    # Write to the Azure Functions log stream.
    Write-Host "PowerShell HTTP trigger function processed a request."
    
    # Interact with query parameters or the body of the request.
    $name = $Request.Query.Name
    if (-not $name) {
        $name = $Request.Body.Name
    }
    
    $body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
    
    if ($name) {
        $body = "Hello, $name. This HTTP triggered function executed successfully."
    }
    
    # Associate values to output bindings by calling 'Push-OutputBinding'.
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body = $body
    })
    
  12. دعنا ننظر بإيجاز إلى ملف الوظيفة الآخر، ملف التكوين function.json. بادر بالوصول إلى هذا الملف عن طريق تحديد function.json من القائمة المنسدلة لمسار الملف. يتم عرض بيانات التكوين في قائمة «JSON» التالية.

    {
      "bindings": [
        {
          "authLevel": "function",
          "type": "httpTrigger",
          "direction": "in",
          "name": "Request",
          "methods": [
            "get",
            "post"
          ]
        },
        {
          "type": "http",
          "direction": "out",
          "name": "Response"
        }
      ]
    }
    

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

استكشف أنواع الرابط

  1. في قائمة Function، حدد Integration. يظهر جزء Integration للوظيفة.

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

    لقطة شاشة لمخطط التدفق العمودي الذي يعرض المشغل والمدخلات التي تؤدي إلى Function يعرض Function الذي يؤدي إلى الإخراج.

    يمكنك أن ترى أنه لا يمكننا إضافة أكثر من مشغل واحد . لتغيير مشغل دالة ما، تحتاج إلى حذف المشغل وإنشاء واحدة جديدة. ومع ذلك، يمكّنك قِسْمَا Inputs وOutputs من إضافة أكثر من ربط، وبالتالي يمكن للطلب قبول أكثر من قيمة إدخال وإرجاع أكثر من قيمة إخراج واحدة.

  2. في مربع Inputs، حدد Add input. يظهر جزء Create Input. حدد القائمة المنسدلة من أجل Binding Type لعرض قائمة بكافة أنواع ربط الإدخال المحتملة.

    لقطة شاشة لخيارات إضافة الإدخال.

    توقف لحظة لتفكر في كيفية استخدام كل من ارتباطات الإدخال هذه في الحل.

    في وقت لاحق في هذه الوحدة النمطية، نضيف روابط الإدخال، ولكن في الوقت الحالي، حدد إلغاء لتجاهل هذا الجزء.

  3. في مربع Outputs، حدد Add output. يظهر جزء Create Output. حدد القائمة المنسدلة من أجل Binding Type لعرض قائمة بكافة أنواع ربط الإخراج المحتملة.

    لقطة شاشة لخيارات إضافة الإخراج.

    كما ترون، هناك العديد من أنواع روابط الإخراج. في وقت لاحق في هذه الوحدة النمطية، نضيف روابط الإخراج ولكن في الوقت الحالي، حدد إلغاء لتجاهل هذا الجزء.

  1. في قائمة Function، حدد Integration. يظهر جزء Integration للوظيفة.

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

    لقطة شاشة لمخطط التدفق الأفقي الذي يعرض المشغل والمدخلات التي تؤدي إلى الدالة والدالة المؤدية إلى المخرجات.

    يمكنك أن ترى أنه لا يمكننا إضافة أكثر من مشغل واحد . لتغيير مشغل إحدى الوظائف، تحتاج إلى حذف المشغل وإنشاء دالة جديدة. ومع ذلك، يمكّنك قِسْمَا Inputs وOutputs من إضافة روابط متعددة، وبالتالي يمكن للدالة قبول أكثر من قيمة إدخال وإرجاع أكثر من قيمة إخراج واحدة.

  2. في مربع Inputs، حدد Add input. يظهر جزء Create Input. حدد القائمة المنسدلة من أجل Binding Type لعرض قائمة بكافة أنواع ربط الإدخال المحتملة.

    لقطة شاشة لخيارات إضافة الإدخال.

    توقف لحظة لتفكر في كيفية استخدام كل من ارتباطات الإدخال هذه في الحل. هناك العديد من الاحتمالات للاختيار من بينها.

    في وقت لاحق في هذه الوحدة النمطية، نضيف روابط الإدخال، ولكن في الوقت الحالي، حدد إلغاء لتجاهل هذا الجزء.

  3. في مربع Outputs، حدد Add output. يظهر جزء Create Output. حدد القائمة المنسدلة من أجل Binding Type لعرض قائمة بكافة أنواع ربط الإخراج المحتملة.

    لقطة شاشة لخيارات إضافة الإخراج.

    كما ترون، هناك العديد من أنواع روابط الإخراج. في وقت لاحق في هذه الوحدة النمطية، نضيف روابط الإخراج ولكن في الوقت الحالي، حدد إلغاء لتجاهل هذا الجزء.

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