Compartilhar via


RouteRequestRouteDirectionsBatch200Response interface

A API Post Route Directions Batch é uma solicitação HTTP POST que envia lotes de consultas para a API Obter Instruções de Rota usando uma única solicitação assíncrona. Você pode chamar Route Directions Batch API para ser executada de forma assíncrona (assíncrona) ou síncrona (sincronização). A API assíncrona permite que o chamador lote até 700 consultas e sincronize a API até 100 consultas. Para chamar a API de Post Route Directions Batch em uma solicitação síncrona, consulte de Sincronização de Lotes de Direções pós-rota.

Enviar solicitação de lote assíncrona

A API assíncrona é apropriada para processar grandes volumes de solicitações de rota relativamente complexas

  • Ele permite a recuperação de resultados em uma chamada separada (vários downloads são possíveis).
  • A API assíncrona é otimizada para confiabilidade e não é esperada para ser executada em um tempo limite.
  • O número de itens em lote é limitado a 700 para essa API.

Quando você faz uma solicitação usando solicitação assíncrona, por padrão, o serviço retorna um código de resposta 202 ao longo de uma URL de redirecionamento no campo Local do cabeçalho de resposta. Essa URL deve ser verificada periodicamente até que os dados de resposta ou informações de erro estejam disponíveis. As respostas assíncronas são armazenadas por 24 horas. A URL de redirecionamento retorna uma resposta 404 se usada após o período de expiração.

Observe que a solicitação de lote assíncrona é uma operação de execução prolongada. Aqui está uma sequência típica de operações:

  1. O cliente envia uma solicitação de POST do Lote de Rotas para o Azure Mapas.
POST https://atlas.microsoft.com/route/directions/batch/json?api-version=1.0&subscription-key={subscription-key}
  1. O servidor responderá com um dos seguintes:

    HTTP 202 Accepted - A solicitação do Lote foi aceita.

    HTTP Error - Houve um erro ao processar sua solicitação do Lote. Isso pode ser um 400 Bad Request ou qualquer outro código de status Error.

  2. Se a solicitação em lote foi aceita com êxito, o cabeçalho Location na resposta contém a URL para baixar os resultados da solicitação em lote. Esse URI de status é semelhante ao seguinte:

GET https://atlas.microsoft.com/route/directions/batch/{batch-id}?api-version=1.0&subscription-key={subscription-key}
  1. O cliente emite uma solicitação de GET na URL de download obtida na Etapa 3 para baixar os resultados do lote.

Corpo POST para solicitação em lote

Para enviar as rotas consultas, você usará uma solicitação POST em que o corpo da solicitação conterá a matriz de batchItems no formato json e o cabeçalho Content-Type será definido como application/json. Aqui está um corpo de solicitação de exemplo contendo 3 rotas consultas:

{
    "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" }
    ]
}

Uma rotas consulta em um lote é apenas um de URL parcial sem o protocolo, a URL base, o caminho, a versão da api e a chave de assinatura. Ele pode aceitar qualquer um dos rotas com suporteparâmetros de URI. Os valores de cadeia de caracteres no rotas consulta devem ser escapados corretamente (por exemplo, " o caractere deve ser escapado com \ ) e também deve ser codificado corretamente em URL.

A API assíncrona permite que o chamador lote até 700 consultas e sincronize a API até 100 consultas e o lote deve conter pelo menos 1 consulta.

Baixar resultados do lote assíncrono

Para baixar os resultados do lote assíncrono, você emitirá uma solicitação GET para o ponto de extremidade de download em lote. Este de URL de download pode ser obtido do cabeçalho Location de uma solicitação em lote de POST bem-sucedida e se parece com o seguinte:

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

Esta é a sequência típica de operações para baixar os resultados do lote:

  1. O cliente envia uma solicitação de GET usando a URL de download .

  2. O servidor responderá com um dos seguintes:

    HTTP 202 Accepted - A solicitação do Lote foi aceita, mas ainda está sendo processada. Tente novamente em algum tempo.

    HTTP 200 OK – Solicitação em lote processada com êxito. O corpo da resposta contém todos os resultados do lote.

Modelo de resposta em lote

O conteúdo de dados retornado é semelhante para solicitações assíncronas e de sincronização. Ao baixar os resultados de uma solicitação em lote assíncrona, se o lote tiver concluído o processamento, o corpo da resposta conterá a resposta em lote. Essa resposta em lote contém um componente summary que indica o totalRequests que faziam parte da solicitação em lote original e successfulRequestsou seja, consultas que foram executadas com êxito. A resposta em lote também inclui uma matriz de batchItems que contém uma resposta para cada consulta na solicitação em lote. O batchItems conterá os resultados exatamente na mesma ordem em que as consultas originais foram enviadas na solicitação em lote. Cada item em batchItems contém campos statusCode e response. Cada response em batchItems é de um dos seguintes tipos:

  • RouteDirections - Se a consulta foi concluída com êxito.

  • Error - Se a consulta falhou. A resposta conterá um code e um message nesse caso.

Aqui está um exemplo de Resposta em Lote com 1 bem-sucedido e 1 resultado com falha:

{
    "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

Propriedades

body
status

Propriedades herdadas

headers

Os cabeçalhos de resposta HTTP.

request

A solicitação que gerou essa resposta.

Detalhes da propriedade

body

body: RouteDirectionsBatchResultOutput

Valor da propriedade

status

status: "200"

Valor da propriedade

"200"

Detalhes das propriedades herdadas

headers

Os cabeçalhos de resposta HTTP.

headers: RawHttpHeaders

Valor da propriedade

Herdado de HttpResponse.headers

request

A solicitação que gerou essa resposta.

request: PipelineRequest

Valor da propriedade

herdado de httpResponse.request