Requêtes

App Builder est en préversion sur le site Datadog Government US1-FED.

Les requêtes sont des actions qui remplissent votre application avec des données provenant des API Datadog ou des intégrations prises en charge. Elles prennent des entrées provenant d’autres requêtes ou de composants de l’interface utilisateur et renvoient des sorties destinées à être utilisées dans d’autres requêtes ou dans des composants de l’interface utilisateur.

Le Action Catalog au sein de l’application Datadog fournit des actions qui peuvent être effectuées en tant que requêtes sur votre infrastructure et vos intégrations à l’aide d’App Builder. Vous pouvez orchestrer et automatiser vos processus de bout en bout en reliant des actions qui effectuent des tâches dans vos fournisseurs cloud, vos outils SaaS et vos comptes Datadog.

Pour ajouter une requête, cliquez sur l’icône Data ({ }) pour ouvrir l’onglet Data. Cliquez sur plus (+), sélectionnez Actions et recherchez « query » pour ajouter une action à votre application. Une fois l’action de requête ajoutée, elle apparaît dans la Actions liste. Sélectionnez une requête pour la configurer.

Vous pouvez également utiliser Bits AI pour ajouter, configurer et déclencher des requêtes. Cliquez sur l’icône Build with AI () pour commencer.

Les requêtes s’appuient sur des Connections pour l’authentification. App Builder partage les connexions avec Workflow Automation.

Paramètres d’exécution

Run Settings déterminent quand une requête est exécutée. Il existe deux options :

  • Auto : La requête s’exécute au chargement de l’application et chaque fois que les arguments de la requête changent.
  • Manual : La requête s’exécute lorsqu’une autre partie de l’application la déclenche. Par exemple, utilisez un déclencheur manuel si vous souhaitez qu’une requête ne s’exécute que lorsqu’un utilisateur clique sur un composant de bouton de l’interface utilisateur. Pour plus d’informations sur les déclencheurs d’événements, consultez Events.

Options de requête avancées

Débruitage

La configuration du débruitage garantit que votre requête n’est déclenchée qu’une seule fois par saisie utilisateur. Par défaut, le débruitage est réglé sur 0 millisecondes (ms). Pour éviter qu’une requête ne soit appelée trop fréquemment, augmentez le débruitage. Configurez le débruitage dans la section Advanced d’une requête.

Requêtes conditionnelles

Vous pouvez définir une condition qui doit être remplie avant qu’une requête puisse s’exécuter. Pour définir la condition d’une requête, saisissez une expression dans le champ Condition de la section Advanced de la requête. Cette condition doit être évaluée comme vraie avant que la requête puisse s’exécuter. Par exemple, si vous souhaitez qu’une requête donnée ne s’exécute que si un composant d’interface utilisateur nommé select0 existe et n’est pas vide, utilisez l’expression suivante :

${select0.value && select0.value.length > 0}

Transformation post-requête

Effectuez une transformation post-requête pour simplifier ou transformer le résultat d’une requête. Ajoutez une transformation post-requête dans la section Advanced d’une requête.

Par exemple, l’action Slack List Channels renvoie un tableau de dictionnaires contenant l’ID et le nom de chaque canal. Pour ignorer les ID et ne renvoyer qu’un tableau de noms, ajoutez la transformation de requête suivante :

// Use `outputs` to reference the query's unformatted output.
// TODO: Apply transformations to the raw query output
arr = []
object = outputs.channels
for (var item in object) {
    arr.push(object[item].name);
}

return arr

Hooks post-requête

Similairement aux événements de composants d’interface utilisateur, vous pouvez configurer une réaction à déclencher après l’exécution d’une requête. Un hook post-requête peut définir l’état d’un composant d’interface utilisateur, ouvrir ou fermer une fenêtre modale, déclencher une autre requête ou même exécuter du JavaScript personnalisé. Par exemple, la requête scaleService du blueprint ECS Task Balancer utilise un hook post-requête pour réexécuter la requête describeService après son exécution.

Vous pouvez utiliser des fonctions d’état dans les hooks post-requête.

Notifications d’erreur

Pour afficher un toast (un bref message de notification) à l’utilisateur lorsque le système renvoie une erreur, activez Show Toast on Errors dans la section Advanced d’une requête.

Invites de confirmation

Pour demander une confirmation à l’utilisateur avant l’exécution de la requête, activez l’option Requires Confirmation dans la section Advanced d’une requête.

Intervalles d’interrogation

Pour exécuter une requête de manière répétée à un intervalle défini pendant que l’application est ouverte sur l’écran d’un utilisateur, saisissez l’intervalle en millisecondes (ms) comme Polling interval dans la section Advanced d’une requête.

Remarque : La requête ne s’exécute pas en arrière-plan ; elle ne s’exécute que lorsque quelqu’un a l’application ouverte.

Sorties simulées

Parfois, lorsque vous créez ou testez une application dans l’éditeur, vous pouvez souhaiter éviter d’exécuter une requête réelle ou éviter d’exécuter la même requête de manière répétée. Lorsque vous activez Mocked outputs et exécutez votre requête, App Builder remplit les sorties avec des données simulées au lieu d’exécuter l’action de requête.

Vous pouvez générer des sorties simulées à partir d’une exécution de requête précédente ou les fournir manuellement.

Générer des sorties à partir d’une exécution précédente

Pour générer des données de sortie simulées à partir d’une exécution de requête précédente, effectuez les étapes suivantes :

  1. Ajoutez une requête et remplissez le reste des paramètres de votre requête.
  2. Cliquez sur Run pour exécuter votre requête une fois.
  3. Dans la section Mocked outputs de la requête, cliquez sur l’onglet Generate.
  4. Cliquez sur Generate from outputs. Cela active automatiquement Use Mocked Outputs.
    Le bouton Run change pour afficher Run (Mocked), et la prochaine fois que vous exécuterez votre requête, la sortie sera remplie avec les données simulées.

Fournissez les sorties manuellement

Pour fournir des sorties simulées manuellement, effectuez les étapes suivantes :

  1. Ajoutez une requête et remplissez le reste des paramètres de votre requête.
  2. Dans la section Mocked outputs de la requête, cliquez sur l’onglet GUI.
  3. Remplissez tous les champs obligatoires, que la vue de l’interface graphique affiche automatiquement.
  4. Optionnellement, pour ajouter des champs supplémentaires, cliquez sur (+). Choisissez une clé dans la liste déroulante et remplissez une valeur. Si vous souhaitez saisir une valeur qui est un objet ou un tableau, cliquez sur {} ou [], respectivement, après le champ Enter value.
  1. Ajoutez une requête et remplissez le reste des paramètres de votre requête.
  2. Dans la section Mocked outputs de la requête, cliquez sur l’onglet JSON.
  3. Collez le JSON qui correspond au format de sortie attendu de la requête.
    Si vous ne connaissez pas le format de sortie attendu, vous pouvez exécuter la requête une fois, puis consulter outputs dans la section Inspect Data de la requête.

Ordre des opérations

Lors de l’exécution d’une requête, App Builder effectue les étapes suivantes dans l’ordre indiqué :

  1. Vérifie s’il existe une expression Condition pour la requête et, le cas échéant, vérifie que la condition est remplie. Si ce n’est pas le cas, l’exécution s’arrête.
  2. Évalue toutes les expressions dans Inputs pour déterminer les données d’entrée de la requête.
  3. Si la propriété Debounce est définie, retarde l’exécution de l’intervalle défini par la valeur de débruitage. Si les entrées de la requête ou leurs dépendances sont mises à jour pendant ce laps de temps, l’exécution de la requête en cours est arrêtée et une nouvelle commence depuis le début en utilisant les entrées mises à jour.
    Remarque : Si plusieurs demandes de requête surviennent dans l’intervalle de débruitage, toutes les demandes sauf la dernière demande d’exécution sont annulées.
  4. Exécute la requête.
  5. Stocke la réponse brute de la requête dans query.rawOutputs.
  6. Exécute toute transformation post-requête et définit query.outputs comme étant égal au résultat. Ce processus prend un instantané des données de l’application et le transmet à la transformation post-requête.
    Remarque : Les transformations post-requête doivent être des fonctions pures sans effets secondaires. Par exemple, ne mettez pas à jour une variable d’état dans votre transformation post-requête.
  7. Calcule toutes les expressions de l’application qui dépendent des données issues du résultat de la requête.
  8. Exécute toutes les Reactions depuis le Events de l’application, dans l’ordre dans lequel elles sont définies dans l’interface utilisateur. Cela implique de prendre un instantané de l’application qui est utilisé tout au long de l’exécution de la réaction. Un nouvel instantané est pris avant l’exécution de chaque réaction, et les modifications apportées par une réaction précédente sont visibles par une réaction ultérieure.
  9. Si un Polling interval est défini, planifie la réexécution de la requête dans le nombre de millisecondes défini.

Exemples d’applications

Renvoyer les résultats du workflow à une application

Les requêtes d’App Builder peuvent déclencher des workflows de Workflow Automation. Les applications peuvent ensuite utiliser les résultats de ces workflows.

Cette application fournit un bouton pour déclencher un workflow. Le workflow envoie un sondage sur un canal Slack demandant à l’utilisateur de choisir parmi deux options. En fonction de l’option choisie par l’utilisateur, le workflow émet l’une des deux requêtes HTTP GET différentes, qui renvoie ensuite des données affichées dans l’application.

Créer un workflow
  1. Dans un nouveau canevas de workflow, sous Datadog Triggers, cliquez sur App.
  2. Sous l’étape de déclenchement App, cliquez sur l’icône plus (+), puis recherchez « Make a decision » et sélectionnez l’action Slack Make a decision.
  3. Sélectionnez votre espace de travail et choisissez un canal à interroger.
  4. Remplissez le texte de l’invite « Cat fact or dog fact? » et modifiez les choix des boutons en « Cat fact » et « Dog fact ».
  5. Sous l’étape Make a decision dans le canevas, cliquez sur l’icône plus (+) au-dessus de Cat fact et ajoutez l’action HTTP Make request.
  6. Nommez l’étape « Get cat fact ». Sous Inputs, pour URL, gardez GET sélectionné et entrez l’URL https://catfact.ninja/fact.
  7. Sous l’étape Make a decision dans le canevas, cliquez sur l’icône plus (+) au-dessus de Dog fact. Suivez les mêmes étapes pour ajouter l’action HTTP Make request, mais cette fois nommez l’étape « Get dog fact » et utilisez les paramètres suivants :
    • URL : https://dogapi.dog/api/v2/facts.
    • Request Headers : Content-Type de application/json
  8. Cliquez sur l’icône plus (+) sous l’étape du fait sur les chats. Recherchez « Function » et choisissez l’étape de transformation de données Function.
  9. Connectez l’icône plus (+) sous l’étape du fait sur les chiens à cette étape JS Function en cliquant et en faisant glisser depuis le plus vers le point qui apparaît au-dessus de l’étape JS Function.
  10. Dans la JS Function, sous Configure, pour Script, utilisez l’extrait de code suivant :
    const catFact = $.Steps.Get_cat_fact?.body?.fact;
    const dogFactRaw = $.Steps.Get_dog_fact?.body;
    
    let dogFact;
    
    try {
        const parsedDogFact = JSON.parse(dogFactRaw);
        dogFact = parsedDogFact.data?.[0]?.attributes?.body;
    } catch {
        // Do nothing
    }
    
    return catFact != null ? catFact : dogFact;
    
  11. Dans la vue d’ensemble du workflow, sous Output Parameters, ajoutez un paramètre nommé output avec la valeur {{ Steps.Function.data }} and the Data Type string.
  12. Nommez votre workflow « My AB Workflow », puis enregistrez et publiez le workflow.
Créez l’application

Pour connecter App Builder au workflow, effectuez les étapes suivantes :

  1. Dans votre application, cliquez sur l’icône Données ({ }), cliquez sur le signe plus (+), puis sélectionnez Query.
  2. Recherchez « Trigger Workflow » et sélectionnez l’élément Trigger Workflow Datadog Workflow Automation.
  3. Réglez Run Settings sur Manuel et nommez la requête triggerWorkflow0.
  4. Sous Inputs, pour App Workflow, sélectionnez My AB Workflow.
  5. Cliquez sur Run pour exécuter le workflow, puis accédez à votre canal Slack et répondez à la question du sondage. Cela fournit à App Builder des exemples de données à afficher.
  6. Ajoutez un composant texte. Sous Content, saisissez l’expression ${triggerWorkflow0?.outputs?.workflowOutputs?.output}.
  7. Ajoutez un composant bouton. Utilisez les valeurs suivantes :
    • Label : « Trigger Workflow »
    • Is Loading : ${triggerWorkflow0.isLoading} (cliquez sur </> pour saisir une expression)
  8. Sous Events du bouton, cliquez sur le signe plus (+) pour ajouter un événement. Utilisez les valeurs suivantes :
    • Event : click
    • Reaction : Trigger Query
    • Query : triggerWorkflow0
  9. Enregistrez votre application.
Application de test
  1. Dans votre application, cliquez sur Preview.
  2. Cliquez sur le bouton Trigger Workflow.
  3. Dans le canal Slack que vous avez sélectionné, répondez à la question du sondage.
    Votre application affiche un résultat lié à l’option que vous avez choisie.

Combiner et transformer les données de sortie de requête

Après avoir obtenu des données à partir d’une requête dans App Builder, vous pouvez utiliser des transformateurs de données pour combiner et transformer ces données.

Cette application fournit des boutons pour récupérer des faits sur deux nombres à partir d’une API. Elle utilise ensuite un transformateur de données pour calculer et afficher la somme des deux nombres.

Créer des requêtes
  1. Dans une nouvelle application, cliquez sur l’icône Données ({ }) pour ouvrir l’onglet Données.
  2. Cliquez sur le signe plus (+), puis sélectionnez Query. Recherchez « Make request » et choisissez l’action HTTP Make request.
  3. Utilisez les valeurs suivantes :
    • Name : mathFact1
    • Sous Inputs, pour URL : GET http://numbersapi.com/random/trivia
  4. Cliquez sur (+) pour ajouter une autre requête HTTP Make request. Utilisez les valeurs suivantes :
    • Name : mathFact2
    • Sous Inputs, pour URL : GET http://numbersapi.com/random/trivia
Ajouter un transformateur de données
  1. Cliquez sur Σ (sigma) pour ouvrir le panneau Transformers.
  2. Cliquez sur + Create Transformer.
  3. Nommez le transformateur numberTransformer. Sous Inputs, sous function () {, saisissez ce qui suit :
    // get both random facts
    const fact1 = mathFact1.outputs.body;
    const fact2 = mathFact2.outputs.body;
    
    // parse the facts to get the first number that appears in them
    const num1 = fact1.match(/\d+/)[0];
    const num2 = fact2.match(/\d+/)[0];
    
    // complete arithmetic on the numbers to find the sum
    const numSum = Number(num1) + Number(num2)
    
    return numSum
    
Créer des composants de canevas d’application
  1. Dans le canevas d’application, ajoutez un bouton et remplissez l’étiquette « Generate fact 1 ».
  2. Sous Events du bouton, utilisez les valeurs suivantes :
    • Event : click
    • Reaction : Trigger Query
    • Query : mathFact1
  3. Ajoutez un autre bouton et remplissez l’étiquette « Generate fact 2 ».
  4. Sous Events du bouton, utilisez les valeurs suivantes :
    • Event : click
    • Reaction : Trigger Query
    • Query : mathFact2
  5. Ajoutez un élément de texte sous le premier bouton. Pour sa propriété Content, cliquez sur </> et saisissez l’expression ${mathFact1.outputs.body}.
  6. Ajoutez un élément de texte sous le second bouton. Pour sa propriété Content, cliquez sur </> et saisissez l’expression ${mathFact2.outputs.body}.
  7. Ajoutez un élément de texte avec la valeur Content « Sum of numbers ».
  8. Ajoutez un élément de texte à côté de celui-ci. Pour sa propriété Content, cliquez sur </> et utilisez l’expression ${numberTransformer.outputs}.
Testez l’application
  1. Dans votre application, cliquez sur Preview.
  2. Cliquez sur Generate fact 1, puis cliquez sur Generate fact 2.
    Votre application met à jour les faits numériques et la somme des nombres à mesure que vous cliquez sur chaque bouton.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles:


Avez-vous des questions ou des commentaires ? Rejoignez le canal #app-builder sur le Datadog Community Slack.