Freigeben über


Arbeiten mit langen Aktionen

In diesem Artikel wird beschrieben, wie Sie mit Aktionen mit langer Ausführungszeit arbeiten, wenn Sie Microsoft Graph-APIs verwenden. Einige API-Antworten erfordern eine unbestimmte Zeit bis zum Abschluss. Anstatt zu warten, bis die Aktion abgeschlossen ist, bevor eine Antwort zurückgegeben wird, verwendet Microsoft Graph möglicherweise ein Muster mit lang andauernden Aktionen. Dieses Muster bietet Ihrer App eine Möglichkeit, Statusupdates für eine aktion mit langer Ausführungsdauer abzufragen, ohne dass eine Anforderung auf den Abschluss der Aktion wartet.

Das allgemeine Muster umfasst die folgenden Schritte:

  1. Ihre App fordert eine Aktion mit langer Ausführungsdauer über die API an. Die API akzeptiert die Aktion und gibt eine 202 Accepted Antwort zusammen mit einem Location Header für die API-URL zurück, um Aktionsstatusberichte abzurufen.
  2. Ihre App fordert die URL des Aktionsstatusberichts an und empfängt eine asyncJobStatus-Antwort mit dem Fortschritt der Aktion mit langer Ausführungszeit.
  3. Die zeitintensive Aktion wird abgeschlossen.
  4. Ihre App fordert die URL des Aktionsstatusberichts erneut an und empfängt eine asyncJobStatus-Antwort , die den Abschluss der Aktion anzeigt.

Voraussetzungen

Die gleichen Berechtigungen , die zum Ausführen einer Aktion mit langer Ausführungszeit erforderlich sind, sind auch erforderlich, um den Status einer Aktion mit langer Ausführungszeit abzufragen.

Anfängliche Aktionsanforderung

Im folgenden Beispiel wird die methode driveitem: copy verwendet. In diesem Szenario sendet Ihre App eine Anforderung zum Kopieren eines Ordners, der eine große Datenmenge enthält. Die Ausführung dieser Anforderung dauert wahrscheinlich mehrere Sekunden, da die Datenmenge groß ist.

POST https://graph.microsoft.com/beta/me/drive/items/{folder-item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "path": "/drive/root:/Documents"
  },
  "name": "Copy of LargeFolder1"
}

Die API antwortet, dass die Aktion akzeptiert wurde, und gibt die URL zum Abrufen des Status der Aktion mit langer Ausführungszeit an.

HTTP/1.1 202 Accepted
Location: https://api.onedrive.com/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Hinweis: Die zurückgegebene Standort-URL befindet sich möglicherweise nicht im Microsoft Graph-API-Endpunkt.

In vielen Fällen ist dieser Schritt das Ende der Anforderung, da die Kopieraktion ohne andere Arbeit von der App abgeschlossen wird. Wenn Ihre App jedoch den Status der Kopieraktion anzeigen oder sicherstellen muss, dass sie ohne Fehler abgeschlossen wird, kann sie dies mithilfe der Überwachungs-URL tun.

Abrufen eines Statusberichts von der Überwachungs-URL

Um den Status des Kopiervorgang zu überprüfen, stellt die App eine Anforderung an die URL, die in der vorherigen Antwort bereitgestellt wurde.

Hinweis: Für diese Anforderung ist keine Authentifizierung erforderlich, da die URL kurzlebig und für den ursprünglichen Aufrufer eindeutig ist.

GET https://api.onedrive.com/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Der Dienst antwortet mit informationen, dass die zeitintensive Aktion noch ausgeführt wird.

HTTP/1.1 202 Accepted
Content-type: application/json

{
  "operation": "ItemCopy",
  "percentageComplete": 27.8,
  "status": "inProgress"
}

Diese Information kann verwendet werden, um den Benutzer über den Fortschritt des Kopiervorgangs zu informieren. Die App kann die Überwachungs-URL weiterhin abfragen, um Statusupdates anzufordern und den Fortschritt der Aktion nachzuverfolgen.

Abrufen eines Statusberichts zum Abschluss von der Überwachungs-URL

Nach einigen Sekunden wird der Kopiervorgang abgeschlossen. Wenn die App diesmal eine Anforderung an die Überwachungs-URL sendet, ist die Antwort eine Umleitung zum abgeschlossenen Ergebnis der Aktion.

GET https://api.onedrive.com/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Wenn die Aktion abgeschlossen ist, gibt die Antwort des Überwachungsdiensts die Ressourcen-ID für die Ergebnisse zurück.

HTTP/1.1 202 Accepted
Content-type: application/json

{
    "percentageComplete": 100.0,
    "resourceId": "01MOWKYVJML57KN2ANMBA3JZJS2MBGC7KM",
    "status": "completed"
}

Abrufen der Ergebnisse des abgeschlossenen Vorgangs

Nach Abschluss des Auftrags gibt die Überwachungs-URL die Ressourcen-ID des Ergebnisses zurück. In diesem Fall handelt es sich um die neue Kopie des ursprünglichen Elements. Das folgende Beispiel zeigt, wie Sie dieses neue Element mithilfe der Ressourcen-ID behandeln können.

GET https://graph.microsoft.com/beta/me/drive/items/{item-id}
HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "",
    "name": "Copy of LargeFolder1",
    "folder": { },
    "size": 12019
}

Unterstützte Ressourcen

Aktionen mit langer Ausführungszeit werden für die folgenden Methoden unterstützt.

Ressource API
driveItem Kopieren