Utilisation d’actions de longue durée
Cet article explique comment utiliser des actions de longue durée lorsque vous utilisez des API Microsoft Graph. Certaines réponses d’API nécessitent un temps indéterminé pour s’exécuter. Au lieu d’attendre que l’action soit terminée avant de retourner une réponse, Microsoft Graph peut utiliser un modèle d’actions de longue durée. Ce modèle permet à votre application d’interroger les mises à jour d’état sur une action de longue durée, sans qu’aucune demande n’attende la fin de l’action.
Le modèle général implique les étapes suivantes :
- Votre application demande une action de longue durée via l’API. L’API accepte l’action et retourne une
202 Accepted
réponse avec unLocation
en-tête pour l’URL de l’API afin de récupérer les rapports d’état de l’action. - Votre application demande l’URL du rapport d’état de l’action et reçoit une réponse asynchroneJobStatus avec la progression de l’action de longue durée.
- L’action de longue durée se termine.
- Votre application demande à nouveau l’URL du rapport d’état de l’action et reçoit une réponse asyncJobStatus qui indique l’achèvement de l’action.
Configuration requise
Les mêmes autorisations que celles requises pour effectuer une action de longue durée sont également requises pour interroger l’état d’une action de longue durée.
Demande d’action initiale
L’exemple suivant utilise la méthode driveitem : copy . Dans ce scénario, votre application effectue une demande de copie d’un dossier qui contient une grande quantité de données. Cette demande est susceptible de prendre plusieurs secondes, car la quantité de données est importante.
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"
}
L’API répond que l’action a été acceptée et fournit l’URL pour récupérer l’état de l’action de longue durée.
HTTP/1.1 202 Accepted
Location: https://api.onedrive.com/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717
Note: L’URL d’emplacement retournée peut ne pas se trouver sur le point de terminaison de l’API Microsoft Graph.
Dans de nombreux cas, cette étape est la fin de la demande, car l’action de copie se termine sans autre travail de la part de l’application. Toutefois, si votre application doit afficher l’état de l’action de copie ou s’assurer qu’elle se termine sans erreur, elle peut le faire à l’aide de l’URL du moniteur.
Récupérer un rapport d’état à partir de l’URL de surveillance
Pour vérifier l’état de l’action de copie, l’application soumet une demande à l’URL fournie dans la réponse précédente.
Note: Cette demande ne nécessite pas d’authentification, car l’URL est de courte durée et propre à l’appelant d’origine.
GET https://api.onedrive.com/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717
Le service répond en indiquant que l’action de longue durée est toujours en cours.
HTTP/1.1 202 Accepted
Content-type: application/json
{
"operation": "ItemCopy",
"percentageComplete": 27.8,
"status": "inProgress"
}
Ces informations peuvent être utilisées pour fournir une mise à jour à l’utilisateur sur la progression de l’action de copie. L’application continue d’interroger l’URL de surveillance pour demander les mises à jour du statut et effectuer le suivi de l’avancement de l’action.
Récupérer un rapport d’état de fin de l’URL de surveillance
Après quelques secondes, l’opération de copie se termine. Cette fois, lorsque l’application envoie une requête à l’URL du moniteur, la réponse est une redirection vers le résultat terminé de l’action.
GET https://api.onedrive.com/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717
Une fois l’action terminée, la réponse du service d’analyse retourne l’ID de ressource pour les résultats.
HTTP/1.1 202 Accepted
Content-type: application/json
{
"percentageComplete": 100.0,
"resourceId": "01MOWKYVJML57KN2ANMBA3JZJS2MBGC7KM",
"status": "completed"
}
Récupérer les résultats de l’action terminée
Une fois le travail terminé, l’URL du moniteur retourne l’ID de ressource du résultat. Dans ce cas, il s’agit de la nouvelle copie de l’élément d’origine. L’exemple suivant montre comment traiter ce nouvel élément à l’aide de l’ID de ressource.
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
}
Ressources prises en charge
Les actions de longue durée sont prises en charge sur les méthodes suivantes.
Ressource | API |
---|---|
driveItem | Copier |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour