إضافة موارد مخصصة إلى واجهة برمجة تطبيقات REST من Azure

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

كيفية تعريف نقطة نهاية المورد

نقطة النهاية هي عنوان URL الذي يشير إلى خدمة، والتي تنفذ الاتفاق الأساسي بينها وبين Azure. يتم تعريف نقطة النهاية في موفر الموارد المخصصة ويمكن أن يكون أي URL يمكن الوصول إليه بشكل عام. تحتوي العينة أدناه على resourceType يسمى تطبيق myCustomResource تم تنفيذه بواسطة endpointURL.

عينة موفر الموارد:

{
  "properties": {
    "resourceTypes": [
      {
        "name": "myCustomResource",
        "routingType": "Proxy, Cache",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus",
  "type": "Microsoft.CustomProviders/resourceProviders",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
  "name": "{resourceProviderName}"
}

إنشاء نقطة نهاية مورد

يجب على نقطة النهاية التي تقوم بتنفيذ resourceType معالجة الطلب والاستجابة لواجهة التطبيقات الجديدة في Azure. عند إنشاء موفر مورد مخصص مع resourceType، سيقوم بإنشاء مجموعة جديدة من واجهة برمجة التطبيقات في Azure. في هذه الحالة، سوف يقوم resourceType بإنشاء واجهة برمجة تطبيقات مورد Azure جديد لـ PUT، وGET، وDELETE ولتنفيذ CRUD على مورد واحد، وكذلك GET لاسترداد جميع الموارد الموجودة:

معالجة مورد واحد (PUT، وGET، وDELETE):

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource/{myCustomResourceName}

استرداد جميع الموارد (GET):

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource

للموارد المخصصة، يقدم موفري الموارد المخصصة نوعين من routingTypes: "Proxy" و"Proxy, Cache".

نوع توجيه الوكيل

يقوم "Proxy" routingType بإنشاء وكلاء لجميع أساليب الطلب إلى نقطة النهاية المحددة في موفر الموارد المخصصة. متى تستخدم "Proxy":

  • التحكم الكامل بالاستجابة مطلوب.
  • تكامل الأنظمة مع الموارد الحالية.

لمعرفة المزيد حول موارد "Proxy"، راجع مرجع وكيل المورد المخصص

نوع توجيه ذاكرة التخزين المؤقت للوكيل

يقوم "Proxy, Cache" routingType بإنشاء وكلاء فقط لأساليب طلب PUT وDELETE إلى نقطة النهاية المحددة في موفر الموارد المخصص. سيقوم موفر الموارد المخصصة بإرجاع الطلبات GET تلقائياً استناداً إلى ما قام بتخزينه في ذاكرة التخزين المؤقت الخاصة به. إذا تم وضع علامة مورد مخصص مع ذاكرة التخزين المؤقت، فسيقوم موفر الموارد المخصصة أيضاً بإضافة / الكتابة على الحقول في الاستجابة لجعل واجهات برمجة تطبيقات لـ Azure متوافقة. متى تستخدم "Proxy, Cache":

  • إنشاء نظام جديد لا يحتوي على موارد موجودة.
  • العمل مع النظام البيئي لـ Azure الموجود.

لمعرفة المزيد حول موارد "Proxy, Cache"، راجع مرجع ذاكرة تخزين مؤقت للمورد المخصص

إنشاء مورد مخصص

هناك طريقتان رئيسيتان لإنشاء مورد مخصص من موفر موارد مخصصة:

  • Azure CLI
  • قوالب Azure Resource Manager

Azure CLI

إنشاء مورد مخصص:

az resource create --is-full-object \
                   --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName} \
                   --properties \
                    '{
                        "location": "eastus",
                        "properties": {
                            "myProperty1": "myPropertyValue1",
                            "myProperty2": {
                                "myProperty3": "myPropertyValue3"
                            }
                        }
                    }'
المعلمة مطلوب الوصف
is-full-object نعم يشير إلى ما إذا كان عنصر الخصائص يتضمن خيارات أخرى مثل الموقع و/أو العلامات و/أو وحدة sku و/أو الخطة.
المعرف نعم معرف المورد للمورد المخصص. يجب أن يكون هذا موجوداً خارج ResourceProvider
‏‏خصائص نعم نص الطلب الذي سيتم إرساله إلى نقطة النهاية.

حذف مورد مخصص لـ Azure:

az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
المعلمة مطلوب الوصف
المعرف نعم معرف المورد للمورد المخصص. يجب أن يكون هذا موجوداً خارج ResourceProvider.

استرداد مورد مخصص لـ Azure:

az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
المعلمة مطلوب الوصف
المعرف نعم معرف المورد للمورد المخصص. يجب أن يكون هذا موجوداً خارج ResourceProvider

قالب Azure Resource Manager

ملاحظة

تتطلب الموارد أن تحتوي الاستجابة على id، وname وtype، مناسبة من نقطة النهاية.

تتطلب قوالب Azure Resource Manager أن يتم إرجاع id، وname، وtype بشكل صحيح من نقطة النهاية اللاحقة. يجب أن تكون استجابة المورد التي تم إرجاعها في النموذج:

عينة من استجابة نقطة النهاية:

{
  "properties": {
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3": "myPropertyValue3"
    }
  },
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{customResourceName}",
  "name": "{customResourceName}",
  "type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}"
}

عينة قالب Azure Resource Manager:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}",
            "name": "{resourceProviderName}/{customResourceName}",
            "apiVersion": "2018-09-01-preview",
            "location": "eastus",
            "properties": {
                "myProperty1": "myPropertyValue1",
                "myProperty2": {
                    "myProperty3": "myPropertyValue3"
                }
            }
        }
    ]
}
المعلمة مطلوب الوصف
resourceTypeName نعم اسمresourceType المحدد في موفر الموارد المخصص.
resourceProviderName نعم اسم مثيل موفر الموارد المخصصة.
customResourceName نعم اسم المورد المخصص.

الخطوات التالية