Share via


建立工具長時間執行作業 API V2

Azure 地圖服務中的某些 API 會使用非同步要求 - 回復模式。 此模式可讓 Azure 地圖服務提供高可用性和回應性的服務。 本文說明 Azure 地圖服務之長時間執行非同步背景處理的特定實作。

提交要求

用戶端應用程式會透過對 HTTP API 的同步呼叫來啟動長時間執行的作業。 一般而言,此呼叫的格式為 HTTP POST 要求。 成功建立非同步工作負載時,API 會傳回 HTTP 202 狀態碼,表示已接受要求。 此回應包含指向端點的 Location 標題,用戶端可以輪詢該端點以檢查長時間執行作業的狀態。

成功回應範例

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

如果呼叫未通過驗證,則 API 會傳回「不正確的要求」HTTP 400 回應。 回應主體會提供用戶端有關要求無效原因的詳細資訊。

監視作業狀態

可輪詢已接受回應標題中所提供的位置端點,以檢查長時間執行作業的狀態。 作業狀態要求的回應主體一律會包含 statuscreated 屬性。 status 屬性表示長時間執行作業的目前狀態。 可能狀態包括 "NotStarted""Running""Succeeded" 以及 "Failed"created 屬性會顯示開始進行長時間執行之作業的初始要求。 當狀態為 "NotStarted""Running" 時,系統也會提供回應的 Retry-After 標題。 Retry-After 標題 (以秒為單位) 可以用來決定何時應該進行下一個輪詢呼叫作業狀態 API。

執行狀態回應的範例

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