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