Partager via


RouteRequestRouteDirectionsBatch202Response interface

L’API Post Route Directions Batch est une requête HTTP POST qui envoie des lots de requêtes à l’API Get Route Directions à l’aide d’une requête asynchrone unique. Vous pouvez appeler Route Directions Batch API pour s’exécuter de manière asynchrone (asynchrone) ou synchrone (synchronisation). L’API asynchrone permet à l’appelant de traiter par lots jusqu’à 700 requêtes et de synchroniser l’API jusqu’à 100 requêtes. Pour appeler l’API Post Route Directions Batch dans une requête synchrone, consultez Post Route Directions Batch Sync.

Envoyer une demande de traitement par lots asynchrone

L’API asynchrone est appropriée pour traiter de gros volumes de demandes de routage relativement complexes

  • Il permet la récupération des résultats dans un appel distinct (plusieurs téléchargements sont possibles).
  • L’API asynchrone est optimisée pour la fiabilité et n’est pas censée s’exécuter dans un délai d’expiration.
  • Le nombre d’éléments de lot est limité à 700 pour cette API.

Lorsque vous effectuez une requête à l’aide d’une requête asynchrone, par défaut, le service retourne un code de réponse 202 le long d’une URL de redirection dans le champ Emplacement de l’en-tête de réponse. Cette URL doit être vérifiée régulièrement jusqu’à ce que les données de réponse ou les informations d’erreur soient disponibles. Les réponses asynchrones sont stockées pendant 24 heures. L’URL de redirection retourne une réponse 404 si elle est utilisée après la période d’expiration.

Notez que la demande de traitement par lots asynchrone est une opération longue. Voici une séquence classique d’opérations :

  1. Le client envoie une demande de POST Route Directions Batch à Azure Maps.
POST https://atlas.microsoft.com/route/directions/batch/json?api-version=1.0&subscription-key={subscription-key}
  1. Le serveur répond avec l’une des options suivantes :

    HTTP 202 Accepted : la requête Batch a été acceptée.

    HTTP Error : une erreur s’est produite lors du traitement de votre requête Batch. Il peut s’agir d’un 400 Bad Request ou d’un autre code d’état Error.

  2. Si la demande de lot a été acceptée avec succès, l’en-tête Location dans la réponse contient l’URL pour télécharger les résultats de la demande de traitement. Cet URI d’état ressemble à ceci :

GET https://atlas.microsoft.com/route/directions/batch/{batch-id}?api-version=1.0&subscription-key={subscription-key}
  1. Le client émet une demande de GET sur l’URL de téléchargement obtenue à l’étape 3 pour télécharger les résultats du lot.

Corps POST pour la requête Batch

Pour envoyer les itinéraires itinéraires requêtes, vous utiliserez une requête POST où le corps de la requête contiendra le tableau batchItems au format json et l’en-tête Content-Type sera défini sur application/json. Voici un exemple de corps de requête contenant 3 itinéraires itinéraires requêtes :

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

Un itinéraire directions requête dans un lot n’est qu’une URL partielle sans le protocole, l’URL de base, le chemin d’accès, la version d’API et la clé d’abonnement. Il peut accepter l’un des itinéraires de routage pris en chargeparamètres d’URI. Les valeurs de chaîne dans la directions de l’itinéraire requête doivent être correctement placées en échappement (par exemple, « le caractère doit être échappé avec \ ) et il doit également être correctement codé en URL.

L’API asynchrone permet à l’appelant de traiter jusqu’à 700 requêtes et de synchroniser l’API jusqu’à 100 requêtes, et le lot doit contenir au moins 1 requête.

Télécharger les résultats de lot asynchrones

Pour télécharger les résultats de lot asynchrones, vous émettrez une demande de GET sur le point de terminaison de téléchargement par lots. Cette 'URL de téléchargement peut être obtenue à partir de l’en-tête Location d’une demande de traitement par lots réussie POST et ressemble à ce qui suit :

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

Voici la séquence classique d’opérations pour télécharger les résultats du lot :

  1. Le client envoie une demande de GET à l’aide de l’URL de téléchargement .

  2. Le serveur répond avec l’une des options suivantes :

    HTTP 202 Accepted : la requête Batch a été acceptée mais est toujours traitée. Réessayez dans un certain temps.

    HTTP 200 OK - Requête batch correctement traitée. Le corps de la réponse contient tous les résultats du lot.

Modèle de réponse par lot

Le contenu de données retourné est similaire pour les demandes asynchrones et de synchronisation. Lors du téléchargement des résultats d’une demande de traitement asynchrone par lot, si le traitement du lot a terminé, le corps de la réponse contient la réponse par lot. Cette réponse par lot contient un composant summary qui indique les totalRequests qui faisaient partie de la demande de lot d’origine et successfulRequestsc’est-à-dire les requêtes qui ont été exécutées avec succès. La réponse par lot inclut également un tableau batchItems qui contient une réponse pour chaque requête dans la requête de lot. Les batchItems contiennent les résultats dans le même ordre que les requêtes d’origine ont été envoyées dans la requête de lot. Chaque élément de batchItems contient des champs statusCode et response. Chaque response dans batchItems est de l’un des types suivants :

  • RouteDirections : si la requête s’est terminée correctement.

  • Error : si la requête a échoué. La réponse contient une code et une message dans ce cas.

Voici un exemple de réponse Batch avec 1 réussite et 1 échec résultat :

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

Propriétés

headers
status

Propriétés héritées

body

Corps analysé

request

Demande qui a généré cette réponse.

Détails de la propriété

headers

headers: RawHttpHeaders & RouteRequestRouteDirectionsBatch202Headers

Valeur de propriété

status

status: "202"

Valeur de propriété

"202"

Détails de la propriété héritée

body

Corps analysé

body: unknown

Valeur de propriété

unknown

héritée de HttpResponse.body

request

Demande qui a généré cette réponse.

request: PipelineRequest

Valeur de propriété

héritée de HttpResponse.request