次の方法で共有


RouteRequestRouteDirectionsBatch202Response interface

Post Route Directions Batch API は、1 つの非同期要求を使用して POST API にクエリのバッチを送信する HTTP 要求です。 Route Directions Batch API を呼び出して、非同期 (非同期) または同期 (同期) のいずれかを実行できます。 非同期 API を使用すると、呼び出し元は最大 700 個の クエリをバッチ処理し、最大 100 個の クエリ API を同期できます。 同期要求で Post Route Directions Batch API を呼び出すには、「ルートのルート案内後のバッチ同期 」を参照してください。

非同期バッチ要求の送信

非同期 API は、比較的複雑なルート要求の大量の処理に適しています

  • これにより、個別の呼び出しで結果を取得できます (複数のダウンロードが可能です)。
  • 非同期 API は信頼性のために最適化されており、タイムアウトになるとは限りません。
  • バッチ項目の数は、この API の 700 に制限されています。

非同期要求を使用して要求を行うと、既定では、サービスは応答ヘッダーの Location フィールドのリダイレクト URL に沿って 202 応答コードを返します。 この URL は、応答データまたはエラー情報が使用可能になるまで定期的に確認する必要があります。 非同期応答は、24 時間格納されます。 リダイレクト URL は、有効期限後に使用された場合、404 応答を返します。

非同期バッチ要求は実行時間の長い操作であることに注意してください。 一般的な一連の操作を次に示します。

  1. クライアントは、Route Directions Batch POST 要求を Azure Maps に送信します。
POST https://atlas.microsoft.com/route/directions/batch/json?api-version=1.0&subscription-key={subscription-key}
  1. サーバーは、次のいずれかの応答を返します。

    HTTP 202 Accepted - バッチ要求が受け入れされました。

    HTTP Error - Batch 要求の処理中にエラーが発生しました。 これは、400 Bad Request またはその他の Error 状態コードのいずれかです。

  2. バッチ要求が正常に受け入れられた場合、応答の Location ヘッダーには、バッチ要求の結果をダウンロードするための URL が含まれます。 この状態 URI は次のようになります。

GET https://atlas.microsoft.com/route/directions/batch/{batch-id}?api-version=1.0&subscription-key={subscription-key}
  1. クライアントは、手順 3 で取得した GET 要求を発行して、バッチ結果をダウンロードします。

バッチ要求の POST 本文

ルートルート案内 クエリを送信するには、要求本文に POST 配列が batchItems 形式で格納され、json ヘッダーが Content-Typeに設定される application/json 要求を使用します。 3 つの ルートルート案内 クエリを含むサンプル要求本文を次に示します。

{
    "batchItems": [
        { "query": "?query=47.620659,-122.348934:47.610101,-122.342015&travelMode=bicycle&routeType=eco&traffic=false" },
        { "query": "?query=40.759856,-73.985108:40.771136,-73.973506&travelMode=pedestrian&routeType=shortest" },
        { "query": "?query=48.923159,-122.557362:32.621279,-116.840362" }
    ]
}

バッチ内のクエリ ルートの方向は、プロトコル、ベース URL、パス、API バージョン、サブスクリプション キーを しない部分的な URL にすぎません。 サポートされている ルートのルート案内URI パラメーター受け取ることができます。 クエリ ルートルートの文字列値は、適切にエスケープする必要があります (例: " 文字は \ でエスケープする必要があります)、また、適切に URL エンコードする必要があります。

非同期 API を使用すると、呼び出し元は最大 700 個の クエリをバッチ処理し、最大で 100 個の クエリ API を同期でき、バッチには少なくとも 1 つの クエリ 含める必要があります。

非同期バッチ結果のダウンロード

非同期バッチ結果をダウンロードするには、バッチ ダウンロード エンドポイントに GET 要求を発行します。 この ダウンロード URL は、成功した Location バッチ要求の POST ヘッダーから取得でき、次のようになります。

https://atlas.microsoft.com/route/directions/batch/{batch-id}?api-version=1.0&subscription-key={subscription-key}

バッチ結果をダウンロードするための一般的な一連の操作を次に示します。

  1. クライアントは、GETを使用して 要求を送信します。

  2. サーバーは、次のいずれかの応答を返します。

    HTTP 202 Accepted - バッチ要求は受け入れられましたが、まだ処理中です。 しばらくしてからやり直してください。

    HTTP 200 OK - バッチ要求が正常に処理されました。 応答本文には、すべてのバッチ結果が含まれています。

バッチ応答モデル

返されるデータ コンテンツは、非同期要求と同期要求に似ています。 非同期バッチ要求の結果をダウンロードするときに、バッチの処理が完了した場合、応答本文にはバッチ応答が含まれます。 このバッチ応答には、元のバッチ要求の一部であった summary と、正常に実行されたクエリ totalRequests示す successfulRequests コンポーネントが含まれています。 バッチ応答には、バッチ要求内の各クエリに対する応答を含む batchItems 配列も含まれます。 batchItems には、元のクエリがバッチ要求で送信されたのとまったく同じ順序で結果が含まれます。 batchItems の各項目には、statusCode フィールドと response フィールドが含まれています。 response の各 batchItems は、次のいずれかの種類です。

  • RouteDirections - クエリが正常に完了した場合。

  • Error - クエリが失敗した場合。 この場合、応答には codemessage が含まれます。

成功した が 1 、失敗した結果が 1 バッチ応答の例を次に示します。

{
    "summary": {
        "successfulRequests": 1,
        "totalRequests": 2
    },
    "batchItems": [
        {
            "statusCode": 200,
            "response": {
                "routes": [
                    {
                        "summary": {
                            "lengthInMeters": 1758,
                            "travelTimeInSeconds": 387,
                            "trafficDelayInSeconds": 0,
                            "departureTime": "2018-07-17T00:49:56+00:00",
                            "arrivalTime": "2018-07-17T00:56:22+00:00"
                        },
                        "legs": [
                            {
                                "summary": {
                                    "lengthInMeters": 1758,
                                    "travelTimeInSeconds": 387,
                                    "trafficDelayInSeconds": 0,
                                    "departureTime": "2018-07-17T00:49:56+00:00",
                                    "arrivalTime": "2018-07-17T00:56:22+00:00"
                                },
                                "points": [
                                    {
                                        "latitude": 47.62094,
                                        "longitude": -122.34892
                                    },
                                    {
                                        "latitude": 47.62094,
                                        "longitude": -122.3485
                                    },
                                    {
                                        "latitude": 47.62095,
                                        "longitude": -122.3476
                                    }
                                ]
                            }
                        ],
                        "sections": [
                            {
                                "startPointIndex": 0,
                                "endPointIndex": 40,
                                "sectionType": "TRAVEL_MODE",
                                "travelMode": "bicycle"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "statusCode": 400,
            "response":
            {
                "error":
                {
                    "code": "400 BadRequest",
                    "message": "Bad request: one or more parameters were incorrectly specified or are mutually exclusive."
                }
            }
        }
    ]
}
Extends

プロパティ

headers
status

継承されたプロパティ

body

解析された本文

request

この応答を生成した要求。

プロパティの詳細

headers

headers: RawHttpHeaders & RouteRequestRouteDirectionsBatch202Headers

プロパティ値

status

status: "202"

プロパティ値

"202"

継承されたプロパティの詳細

body

解析された本文

body: unknown

プロパティ値

unknown

httpResponse.body から継承

request

この応答を生成した要求。

request: PipelineRequest

プロパティ値

httpResponse.request から継承