واجهة برمجة تطبيقات عملية Long-Running منشئي المحتوى V2

تستخدم بعض واجهات برمجة التطبيقات في خرائط Azure نمط Request-Reply غير متزامن. يسمح هذا النمط خرائط Azure بتقديم خدمات متاحة وسريعة الاستجابة. توضح هذه المقالة التنفيذ المحدد ل Azure Map لمعالجة الخلفية غير المتزامنة طويلة الأمد.

تقديم طلب

يبدأ تطبيق عميل عملية طويلة الأمد من خلال استدعاء متزامن إلى واجهة برمجة تطبيقات HTTP. عادة ما تكون هذه المكالمة في شكل طلب HTTP POST. عند إنشاء عبء عمل غير متزامن بنجاح، ستعرض واجهة برمجة التطبيقات رمز حالة HTTP 202 ، مما يشير إلى قبول الطلب. تحتوي هذه الاستجابة على Location رأس يشير إلى نقطة نهاية يمكن للعميل استقصاؤها للتحقق من حالة العملية طويلة الأمد.

مثال على الاستجابة الناجحة

Status: 202 Accepted
Operation-Location: https://atlas.microsoft.com/service/operations/{operationId} 

إذا لم تجتاز المكالمة التحقق من الصحة، فستعرض واجهة برمجة التطبيقات بدلا من ذلك استجابة HTTP 400 لطلب غير صحيح. ستقوم هيئة الاستجابة بتزويد العميل بمزيد من المعلومات حول سبب عدم صلاحية الطلب.

مراقبة حالة التشغيل

يمكن استقصاء نقطة نهاية الموقع المتوفرة في رؤوس الاستجابة المقبولة للتحقق من حالة العملية طويلة الأمد. سيحتوي نص الاستجابة من طلب حالة العملية دائما على status الخصائص والخصائص created . status تعرض الخاصية الحالة الحالية للعملية طويلة الأمد. تشمل "NotStarted"الحالات المحتملة ، و "Running"، "Succeeded"و "Failed". created تعرض الخاصية الوقت الذي تم فيه تقديم الطلب الأولي لبدء العملية طويلة الأمد. عندما تكون الحالة إما "NotStarted" أو "Running"، Retry-After سيتم أيضا توفير رأس مع الاستجابة. يمكن استخدام الرأس، الذي يقاس Retry-After بالثواني، لتحديد موعد إجراء استدعاء الاقتراع التالي إلى واجهة برمجة تطبيقات حالة العملية.

مثال على تشغيل استجابة حالة

Status: 200 OK
Retry-After: 30
{
    "operationId": "c587574e-add9-4ef7-9788-1635bed9a87e",
    "created": "3/11/2020 8:45:13 PM +00:00",
    "status": "Running"
}

التعامل مع اكتمال العملية

عند الانتهاء من العملية طويلة الأمد ، ستكون "Succeeded" حالة الاستجابة إما أو "Failed". ستقوم جميع الردود بإرجاع رمز HTTP 200 OK. عند إنشاء مورد جديد من عملية طويلة الأمد، ستحتوي الاستجابة أيضا على Resource-Location رأس يشير إلى بيانات تعريف حول المورد. عند الفشل ، سيكون للاستجابة خاصية error في الجسم. تلتزم بيانات الخطأ بمواصفات خطأ OData.

مثال على الاستجابة للنجاح

Status: 200 OK
Resource-Location: "https://atlas.microsoft.com/tileset/{tileset-id}"
 {
    "operationId": "c587574e-add9-4ef7-9788-1635bed9a87e",
    "created": "2021-05-06T07:55:19.5256829+00:00",
    "status": "Succeeded"
}

مثال على الاستجابة للفشل

Status: 200 OK

{
    "operationId": "c587574e-add9-4ef7-9788-1635bed9a87e",
    "created": "3/11/2020 8:45:13 PM +00:00",
    "status": "Failed",
    "error": {
        "code": "InvalidFeature",
        "message": "The provided feature is invalid.",
        "details": {
            "code": "NoGeometry",
            "message": "No geometry was provided with the feature."
        }
    }
}