Share via


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."
        }
    }
}