你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建者长时间运行的操作 API V2

Azure Maps 中的某些 API 使用异步请求-答复模式。 此模式允许 Azure Maps 提供高度可用且响应迅速的服务。 本文介绍了 Azure Map 长时间运行的异步后台处理的特定实现。

提交请求

客户端应用程序通过对 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 正常”代码。 通过长时间运行的操作创建新资源后,响应还包含一个指向有关资源的元数据的 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."
        }
    }
}