إضافة إجراءات مخصصة إلى واجهة برمجة تطبيقات REST من Azure
سوف تعرض هذه المقالة المتطلبات وأفضل الممارسات لإنشاء نقاط نهاية موفر الموارد المخصصة من Azure التي تنفذ الإجراءات المخصصة. إذا لم تكن على دراية بموفري الموارد المخصصة من Azure، فراجع نظرة عامة حول موفري الموارد المخصصة.
كيفية تعريف نقطة نهاية الإجراء
نقطة النهاية هي عنوان URL الذي يشير إلى خدمة، والتي تنفذ الاتفاق الأساسي بينها وبين Azure. يتم تعريف نقطة النهاية في موفر الموارد المخصصة ويمكن أن يكون أي URL يمكن الوصول إليه بشكل عام. تحتوي العينة أدناه على إجراء يسمى myCustomAction
وتم تنفيذه من قِبل endpointURL
.
عينة موفر الموارد:
{
"properties": {
"actions": [
{
"name": "myCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus",
"type": "Microsoft.CustomProviders/resourceProviders",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
"name": "{resourceProviderName}"
}
تحويل نقطة نهاية إجراء برمجياً
يجب على نقطة النهاية التي تقوم بتنفيذ إجراء معالجة الطلب والاستجابة لواجهة التطبيقات الجديدة في Azure. عند إنشاء موفر موارد مخصصة مع إجراء، فإنه سيتم إنشاء مجموعة جديدة من واجهات برمجة التطبيقات في Azure. في هذه الحالة، سيقوم الإجراء بإنشاء واجهة برمجة تطبيقات جديدة للإجراء من Azure لاستدعاءات POST
:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
الطلب الوارد لواجهة برمجة تطبيقات Azure:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
ستتم إعادة توجيه هذا الطلب بعد ذلك إلى نقطة النهاية في النموذج التالي:
POST https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomAction
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
وبالمثل، تتم إعادة توجيه الاستجابة من نقطة النهاية مرة أخرى إلى العميل. يجب أن ترجع الاستجابة من نقطة النهاية:
- مستند عنصر JSON صالح. يجب أن تتداخل جميع الصفائف والسلاسل ضمن عنصر علوي.
- يجب تعيين العنوان
Content-Type
إلى "application/json; charset=utf-8".
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
استجابة موفر الموارد المخصصة من Azure:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
استدعاء إجراء مخصص
هناك طريقتان رئيسيتان لإلغاء إجراء مخصص من موفر مورد مخصص:
- Azure CLI
- قوالب Azure Resource Manager
Azure CLI
az resource invoke-action --action {actionName} \
--ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName} \
--request-body \
'{
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}'
المعلمة | مطلوب | الوصف |
---|---|---|
إجراء | نعم | اسم الإجراء المحدد في ResourceProvider. |
ids | نعم | معرف المورد من ResourceProvider. |
request-body | لا | نص الطلب الذي سيتم إرساله إلى نقطة النهاية. |
قالب Azure Resource Manager
ملاحظة
الإجراءات التي حددت الدعم في قوالب Azure Resource Manager. لكي يتم استدعاء الإجراء داخل قالب، يجب أن يحتوي على البادئة list
داخل اسمه.
عينة ResourceProvider مع إجراء القائمة:
{
"properties": {
"actions": [
{
"name": "listMyCustomAction",
"routingType": "Proxy",
"endpoint": "https://{endpointURL}/"
}
]
},
"location": "eastus"
}
عينة قالب Azure Resource Manager:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"resourceIdentifier": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
"apiVersion": "2018-09-01-preview",
"functionValues": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3": "myPropertyValue3"
}
}
},
"resources": [],
"outputs": {
"myCustomActionOutput": {
"type": "object",
"value": "[listMyCustomAction(variables('resourceIdentifier'), variables('apiVersion'), variables('functionValues'))]"
}
}
}
المعلمة | مطلوب | الوصف |
---|---|---|
resourceIdentifier | نعم | معرف المورد من ResourceProvider. |
apiVersion | نعم | إصدار واجهة برمجة التطبيقات لوقت تشغيل المورد. يجب أن يكون هذا دائماً "2018-09-01-preview". |
functionValues | لا | نص الطلب الذي سيتم إرساله إلى نقطة النهاية. |