Поделиться через


RouteRequestRouteDirectionsBatch202Response interface

API Post Route Directions Batch — это HTTP-запрос POST, который отправляет пакеты запросов в API получения маршрутов с помощью одного асинхронного запроса. Вы можете вызывать API Route Directions Batch для асинхронного (асинхронного) или синхронного (синхронного). Асинхронный API позволяет вызывающей службе пакетировать до 700 запросов и синхронизации API до 100 запросов. Чтобы вызвать API Post Route Directions Batch в синхронном запросе, ознакомьтесь с пакетной синхронизации маршрутов после маршрутизации.

Отправка асинхронного пакетного запроса

Асинхронный API подходит для обработки больших объемов относительно сложных запросов маршрутов

  • Это позволяет получить результаты в отдельном вызове (возможно несколько скачивание).
  • Асинхронный API оптимизирован для надежности и не должен выполняться во время ожидания.
  • Количество пакетных элементов ограничено 700 для этого API.

При выполнении запроса с помощью асинхронного запроса служба возвращает код ответа 202 по URL-адресу перенаправления в поле "Расположение" заголовка ответа. Этот URL-адрес следует периодически проверять до тех пор, пока не будут доступны данные ответа или сведения об ошибках. Асинхронные ответы хранятся в течение 24 часов. URL-адрес перенаправления возвращает ответ 404, если используется после истечения срока действия.

Обратите внимание, что асинхронный пакетный запрос является длительной операцией. Ниже приведена типичная последовательность операций:

  1. Клиент отправляет пакетное 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 . Произошла ошибка при обработке запроса пакетной службы. Это может быть либо 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. Клиент выдает запрос GET на URL-адрес скачивания , полученный на шаге 3, чтобы скачать результаты пакета.

Текст 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-адрес без протокола, базового URL-адреса, пути, версии API и ключа подписки. Он может принимать любые поддерживаемые направления маршрута URI. Строковые значения в направлениях маршрута запроса должны быть правильно экранированы (например, "символ должен быть экранирован с \ ), и он также должен быть правильно закодирован URL-адресом.

Асинхронный API позволяет вызывающей службе пакетировать до 700 запросов и api синхронизации до 100 запросов, а пакет должен содержать по крайней мере 1 запроса.

Скачивание асинхронных результатов пакетной службы

Чтобы скачать асинхронные результаты пакетной службы, вы получите запрос GET на конечную точку загрузки пакетной службы. Этот URL-адрес скачивания можно получить из заголовка Location успешного запроса POST пакетного запроса и выглядит следующим образом:

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

Ниже приведена типичная последовательность операций для скачивания результатов пакетной службы:

  1. Клиент отправляет запрос GET с помощью URL-адреса скачивания.

  2. Сервер ответит на одно из следующих действий:

    HTTP-202 Accepted — пакетный запрос был принят, но по-прежнему обрабатывается. Повторите попытку в течение некоторого времени.

    HTTP 200 OK — пакетный запрос успешно обработан. Текст ответа содержит все результаты пакета.

Модель пакетного ответа

Возвращаемое содержимое данных аналогично асинхронным и синхронным запросам. При скачивании результатов асинхронного пакетного запроса, если пакет завершил обработку, текст ответа содержит пакетный ответ. Этот пакетный ответ содержит компонент summary, указывающий totalRequests, которые были частью исходного пакетного запроса и successfulRequestsто есть запросы, которые были выполнены успешно. Пакетный ответ также содержит массив batchItems, содержащий ответ для каждого запроса и каждого запроса в пакетном запросе. batchItems будет содержать результаты в том же порядке, что и исходные запросы, отправленные в пакетном запросе. Каждый элемент в batchItems содержит поля statusCode и response. Каждый response в batchItems имеет один из следующих типов:

  • RouteDirections. Если запрос выполнен успешно.

  • Error — если запрос завершился ошибкой. Ответ будет содержать code и message в этом случае.

Ниже приведен пример пакетного ответа с 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