Creator Long-Running Operation API V2
Sommige API's in Azure Maps een asynchroon Request-Reply-patroon gebruiken. Met dit patroon kunnen Azure Maps maximaal beschikbare en responsieve services bieden. In dit artikel wordt de specifieke implementatie van Azure Map van langdurige asynchrone achtergrondverwerking uitgelegd.
Dien een aanvraag in
Een clienttoepassing start een langlopende bewerking via een synchrone aanroep naar een HTTP-API. Deze aanroep heeft doorgaans de vorm van een HTTP POST-aanvraag. Wanneer een asynchrone workload is gemaakt, retourneert de API een HTTP-statuscode 202
, waarmee wordt aangegeven dat de aanvraag is geaccepteerd. Dit antwoord bevat een Location
header die verwijst naar een eindpunt dat de client kan peilen om de status van de langlopende bewerking te controleren.
Voorbeeld van een geslaagd antwoord
Status: 202 Accepted
Operation-Location: https://atlas.microsoft.com/service/operations/{operationId}
Als de aanroep niet wordt gevalideerd, retourneert de API een HTTP-antwoord 400
voor een ongeldige aanvraag. De antwoordtekst biedt de client meer informatie over waarom de aanvraag ongeldig is.
De bewerkingsstatus bewaken
Het locatie-eindpunt dat is opgegeven in de geaccepteerde antwoordheaders, kan worden gecontroleerd om de status van de langlopende bewerking te controleren. De antwoordtekst van de aanvraag voor de bewerkingsstatus bevat altijd de status
eigenschappen en created
. De status
eigenschap geeft de huidige status van de langdurige bewerking weer. Mogelijke statussen zijn , "NotStarted"
"Running"
, "Succeeded"
en "Failed"
. De created
eigenschap toont het tijdstip waarop de eerste aanvraag is gedaan om de langlopende bewerking te starten. Wanneer de status of "Running"
is, wordt "NotStarted"
er ook een Retry-After
header opgegeven bij het antwoord. De Retry-After
header, gemeten in seconden, kan worden gebruikt om te bepalen wanneer de volgende polling-aanroep naar de bewerkingsstatus-API moet worden uitgevoerd.
Voorbeeld van het uitvoeren van een statusantwoord
Status: 200 OK
Retry-After: 30
{
"operationId": "c587574e-add9-4ef7-9788-1635bed9a87e",
"created": "3/11/2020 8:45:13 PM +00:00",
"status": "Running"
}
Bewerking voltooien verwerken
Zodra de langlopende bewerking is voltooid, is "Succeeded"
de status van het antwoord of "Failed"
. Alle antwoorden retourneren een HTTP 200 OK-code. Wanneer een nieuwe resource is gemaakt op basis van een langdurige bewerking, bevat het antwoord ook een Resource-Location
header die verwijst naar metagegevens over de resource. Bij een fout heeft het antwoord een error
eigenschap in de hoofdtekst. De foutgegevens voldoen aan de OData-foutspecificatie.
Voorbeeld van een geslaagd antwoord
Status: 200 OK
Resource-Location: "https://atlas.microsoft.com/tileset/{tileset-id}"
{
"operationId": "c587574e-add9-4ef7-9788-1635bed9a87e",
"created": "2021-05-06T07:55:19.5256829+00:00",
"status": "Succeeded"
}
Voorbeeld van een foutreactie
Status: 200 OK
{
"operationId": "c587574e-add9-4ef7-9788-1635bed9a87e",
"created": "3/11/2020 8:45:13 PM +00:00",
"status": "Failed",
"error": {
"code": "InvalidFeature",
"message": "The provided feature is invalid.",
"details": {
"code": "NoGeometry",
"message": "No geometry was provided with the feature."
}
}
}