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, если используется после истечения срока действия.
Обратите внимание, что асинхронный пакетный запрос является длительной операцией. Ниже приведена типичная последовательность операций:
- Клиент отправляет пакетное
POSTмаршрутов в Azure Maps.
POST https://atlas.microsoft.com/route/directions/batch/json?api-version=1.0&subscription-key={subscription-key}
Сервер ответит на одно из следующих действий:
HTTP
202 Accepted— пакетный запрос был принят.HTTP
Error. Произошла ошибка при обработке запроса пакетной службы. Это может быть либо400 Bad Request, либо любой другой код состоянияError.Если пакетный запрос был принят успешно, заголовок
Locationв ответе содержит URL-адрес для скачивания результатов пакетного запроса. Этот универсальный код ресурса (URI) состояния выглядит следующим образом:
GET https://atlas.microsoft.com/route/directions/batch/{batch-id}?api-version=1.0&subscription-key={subscription-key}
- Клиент выдает запрос
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}
Ниже приведена типичная последовательность операций для скачивания результатов пакетной службы:
Клиент отправляет запрос
GETс помощью URL-адреса скачивания.Сервер ответит на одно из следующих действий:
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
headers: RawHttpHeaders & RouteRequestRouteDirectionsBatch202Headers
Значение свойства
status
status: "202"
Значение свойства
"202"
Сведения об унаследованном свойстве
body
Проанализированный текст
body: unknown
Значение свойства
unknown
наследуется от HttpResponse.body
request
Запрос, создающий этот ответ.
request: PipelineRequest
Значение свойства
наследуется от HttpResponse.request