Pembuat API V2 Operasi Jangka Panjang

Beberapa API di Azure Maps menggunakan Pola Minta-Jawab asinkron. Pola ini memungkinkan Azure Maps untuk menyediakan layanan yang sangat tersedia dan responsif. Artikel ini menjelaskan implementasi spesifik Azure Maps tentang pemrosesan latar belakang asinkron yang berjalan lama.

Mengirimkan permintaan

Sebuah aplikasi klien memulai operasi jangka panjang melalui panggilan yang sinkron ke API HTTP. Biasanya, panggilan ini ada dalam bentuk permintaan HTTP POST. Ketika beban kerja asinkron berhasil dibuat, API mengembalikan kode status HTTP 202 , yang menunjukkan bahwa permintaan telah diterima. Respons ini berisi header Location yang menunjuk ke titik akhir yang dapat dijajaki klien untuk memeriksa status operasi yang berjalan lama.

Contoh respons keberhasilan

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

Jika panggilan tidak lulus validasi, API mengembalikan respons HTTP 400 untuk Permintaan Buruk. Isi respons memberi klien informasi lebih lanjut tentang mengapa permintaan tidak valid.

Memantau status operasi

Titik akhir lokasi yang disediakan di header respons yang diterima dapat dijajaki untuk memeriksa status operasi jangka panjang. Isi respons dari permintaan status operasi selalu berisi status properti dan created . Properti status menunjukkan status operasi jangka panjang saat ini. Kemungkinan statusnya mencakup "NotStarted", "Running", "Succeeded", dan "Failed". Properti created menunjukkan waktu saat permintaan awal dibuat untuk memulai operasi jangka panjang. Ketika status adalah "NotStarted" atau "Running", Retry-After header juga disediakan dengan respons. Header Retry-After yang diukur dalam hitungan detik, dapat digunakan untuk menentukan kapan panggilan penjajakan berikutnya ke API status operasi harus dilakukan.

Contoh menjalankan respons status

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

Menangani penyelesaian operasi

Setelah operasi jangka panjang selesai, status respons adalah "Succeeded" atau "Failed". Semua respons mengembalikan kode HTTP 200 OK. Ketika sumber daya baru telah dibuat dari operasi yang berjalan lama, respons juga berisi Resource-Location header yang menunjuk ke metadata tentang sumber daya. Setelah gagal, respons memiliki error properti dalam isi. Data kesalahan mematuhi spesifikasi kesalahan OData.

Contoh respons keberhasilan

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"
}

Contoh respons kegagalan

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."
        }
    }
}