Appeler, déclencher ou imbriquer des applications logiques à l’aide de points de terminaison HTTP dans Azure Logic AppsCall, trigger, or nest logic apps by using HTTP endpoints in Azure Logic Apps

Afin que votre application logique puisse être appelée via une URL pour qu’elle puisse recevoir des demandes entrantes d’autres services, vous pouvez exposer en mode natif un point de terminaison HTTP synchrone en tant que déclencheur sur cette application logique.To make your logic app callable through a URL so that your logic app can receive incoming requests from other services, you can natively expose a synchronous HTTP endpoint as a trigger on that logic app. Quand vous configurez cette fonctionnalité, vous pouvez également imbriquer votre application logique dans d’autres applications logiques, ce qui vous permet de créer un modèle de points de terminaison pouvant être appelés.When you set up this capability, you can also nest your logic app inside other logic apps, which lets you create a pattern of callable endpoints.

Pour configurer un point de terminaison HTTP, vous pouvez utiliser l’un de ces types de déclencheurs, qui permettent aux applications logiques de recevoir des demandes entrantes :To set up an HTTP endpoint, you can use any of these trigger types, which enable logic apps to receive incoming requests:

Notes

Ces exemples utilisent le déclencheur de requête, mais vous pouvez utiliser n’importe quel déclencheur basé sur une requête HTTP figurant dans la liste précédente.These examples use the Request trigger, but you can use any HTTP request-based trigger that's in the previous list. Tous les principes s’appliquent de manière identique à ces autres types de déclencheurs.All principles identically apply to these other trigger types.

Si vous débutez avec les applications logiques, consultez Qu’est-ce qu’Azure Logic Apps et Démarrage rapide : Créer votre première application logique.If you're new to logic apps, see What is Azure Logic Apps and Quickstart: Create your first logic app.

PrérequisPrerequisites

  • Un abonnement Azure.An Azure subscription. Si vous n’avez pas encore d’abonnement, vous pouvez vous inscrire pour obtenir un compte Azure gratuitement.If you don't have a subscription, sign up for a free Azure account.

  • L’application logique dans laquelle vous souhaitez configurer le point de terminaison HTTP comme déclencheur.The logic app where you want to set up the HTTP endpoint as the trigger. Vous pouvez commencer avec une application logique vide ou une application logique existante au sein de laquelle vous souhaitez remplacer le déclencheur actuel.You can start with either a blank logic app or an existing logic app where you want to replace the current trigger. Pour cet exemple, vous avez besoin d’une application logique vide.This example starts with a blank logic app.

Créer un point de terminaison pouvant être appeléCreate a callable endpoint

  1. Connectez-vous au Portail Azure.Sign in to the Azure portal. Créez et ouvrez une application logique vide dans le concepteur d’applications logiques.Create and open a blank logic app in the Logic App Designer.

    Cet exemple utilise le déclencheur de requête, mais vous pouvez utiliser n’importe quel déclencheur capable de recevoir des requêtes HTTP entrantes.This example uses the Request trigger, but you can use any trigger that can receive incoming HTTP requests. Tous les principes s’appliquent de manière identique à ces déclencheurs.All principles identically apply to these triggers. Pour plus d’informations sur le déclencheur de requête, consultez Recevoir et répondre aux appels HTTPS entrants à l’aide d’Azure Logic Apps.For more information about the Request trigger, see Receive and respond to incoming HTTPS calls by using Azure Logic Apps.

  2. Dans la zone de recherche, sélectionnez Intégré.Under the search box, select Built-in. Dans la zone de recherche, entrez request en guise de filtre.In the search box, enter request as your filter. Dans la liste Déclencheurs, sélectionnez Lors de la réception d’une requête HTTP.From the triggers list, select When a HTTP request is received.

    Localisez et sélectionnez le déclencheur Requête

  3. Si vous le souhaitez, dans la boîte du schéma JSON du corps de la requête, vous pouvez entrer un schéma JSON qui décrit la charge utile ou les données que le déclencheur doit recevoir.Optionally, in the Request Body JSON Schema box, you can enter a JSON schema that describes the payload or data that you expect the trigger to receive.

    Le concepteur utilise ce schéma pour générer des jetons qui représentent des sorties de déclencheur.The designer uses this schema to generate tokens that represent trigger outputs. Vous pouvez ensuite facilement référencer ces sorties dans le flux de travail de votre application logique.You can then easily reference these outputs throughout your logic app's workflow. Cliquez sur le lien renvoyant à la section Jetons générés à partir de schémas JSON pour votre application logique pour en apprendre davantage.Learn more about tokens generated from JSON schemas.

    Pour cet exemple, entrez ce schéma :For this example, enter this schema:

       {
       "type": "object",
       "properties": {
          "address": {
             "type": "object",
             "properties": {
                "streetNumber": {
                   "type": "string"
                },
                "streetName": {
                   "type": "string"
                },
                "town": {
                   "type": "string"
                },
                "postalCode": {
                   "type": "string"
                }
             }
          }
       }
    }
    

    Fournir le schéma JSON pour l’action de requête

    Ou vous pouvez générer un schéma JSON en fournissant un exemple de charge utile :Or, you can generate a JSON schema by providing a sample payload:

    1. Dans le déclencheur de requête, sélectionnez Utiliser l’exemple de charge utile pour générer le schéma.In the Request trigger, select Use sample payload to generate schema.

    2. Dans la boîte Entrer ou coller un exemple de charge utile JSON, entrez votre exemple de charge utile, par exemple :In the Enter or paste a sample JSON payload box, enter your sample payload, for example:

      {
         "address": {
            "streetNumber": "00000",
            "streetName": "AnyStreet",
            "town": "AnyTown",
            "postalCode": "11111-1111"
        }
      }
      
    3. Quand vous êtes prêt, sélectionnez Terminé.When you're ready, select Done.

      La boîte de Schéma JSON du corps de la requête affiche maintenant le schéma généré.The Request Body JSON Schema box now shows the generated schema.

  4. Enregistrez votre application logique.Save your logic app.

    La boîte POST HTTP pour cette URL affiche désormais l’URL de rappel générée que les autres services peuvent utiliser pour appeler et déclencher votre application logique.The HTTP POST to this URL box now shows the generated callback URL that other services can use to call and trigger your logic app. Cette URL contient une clé de signature d’accès partagé (SAP), qui est utilisée pour l’authentification dans les paramètres de requête, par exemple :This URL includes a Shared Access Signature (SAS) key, which is used for authentication, in the query parameters, for example:

    URL de rappel générée pour le point de terminaison

    Vous pouvez également récupérer l’URL du point de terminaison HTTP à partir du volet Vue d’ensemble de l’application logique.You can also get the HTTP endpoint URL from your logic app's Overview pane.

    1. Dans le menu de votre application logique, sélectionnez Vue d’ensemble.On your logic app's menu, select Overview.

    2. Dans la section Résumé, sélectionnez Afficher l’historique du déclencheur.In the Summary section, select See trigger history.

      Obtenir l’URL de point de terminaison HTTP à partir du portail Azure

    3. Sous URL de rappel [POST] , copiez l’URL :Under Callback url [POST], copy the URL:

      Copier l’URL de point de terminaison HTTP à partir du Portail Azure

      Ou vous pouvez obtenir l’URL en appelant :Or you can get the URL by making this call:

      POST https://management.azure.com/{logic-app-resource-ID}/triggers/{endpoint-trigger-name}/listCallbackURL?api-version=2016-06-01
      

Définir la méthode HTTP attendueSet expected HTTP method

Par défaut, le déclencheur Requête attend une requête HTTP POST.By default, the Request trigger expects an HTTP POST request. Toutefois, vous pouvez spécifier une méthode différente à attendre, mais une seule méthode.However, you can specify a different method to expect, but only one method.

  1. Dans le déclencheur de requête, ouvrez la liste Ajouter un nouveau paramètre, puis sélectionnez Méthode qui ajoute cette propriété au déclencheur.In the Request trigger, open the Add new parameter list, and select Method, which adds this property to the trigger.

    Ajouter la propriété « Méthode » au déclencheur

  2. Dans la liste Méthode, sélectionnez une autre méthode attendue par le déclencheur.From the Method list, select another method that the trigger expects instead. Ou vous pouvez spécifier une méthode personnalisée.Or, you can specify a custom method.

    Par exemple, sélectionnez la méthode GET pour pouvoir tester ultérieurement l’URL de votre point de terminaison HTTP.For example, select the GET method so that you can test your HTTP endpoint's URL later.

    Sélectionner la méthode HTTP à utiliser pour le déclencheur

Accepter les paramètres dans l’URL du point de terminaisonAccept parameters in endpoint URL

Si vous souhaitez que votre URL de point de terminaison accepte des paramètres, spécifiez le chemin d’accès relatif dans votre déclencheur.When you want your endpoint URL to accept parameters, specify the relative path in your trigger. Vous devez également définir explicitement la méthode attendue par votre requête HTTP.You also need to explicitly set the method that your HTTP request expects.

  1. Dans le déclencheur de requête, ouvrez la liste Ajouter un nouveau paramètre, puis sélectionnez Chemin d’accès relatif qui ajoute cette propriété au déclencheur.In the Request trigger, open the Add new parameter list, and select Relative path, which adds this property to the trigger.

    Ajouter la propriété « Chemin d’accès relatif » au déclencheur

  2. Dans la propriété Chemin d’accès relatif, spécifiez le chemin d’accès relatif que vous souhaitez que votre URL accepte pour le paramètre dans votre schéma JSON, par exemple address/{postalCode}.In the Relative path property, specify the relative path for the parameter in your JSON schema that you want your URL to accept, for example, address/{postalCode}.

    Spécifier le chemin d’accès relatif pour le paramètre

  3. Pour utiliser le paramètre, recherchez et ajoutez une action Réponse à votre application logique.To use the parameter, find and add a Response action to your logic app.

    1. Sous le déclencheur de requête, sélectionnez Nouvelle étape > Ajouter une action.Under the Request trigger, select New step > Add an action.

    2. Sous Choisir une action, dans la zone de recherche, entrez response en guise de filtre.Under Choose an action, in the search box, enter response as your filter.

    3. Dans la liste des actions, sélectionnez l’action Réponse.From the actions list, select the Response action.

  4. Dans la propriété de corps de l’action de réponse, incluez le jeton qui représente le paramètre que vous avez spécifié dans le chemin d’accès relatif de votre déclencheur.In the Response action's Body property, include the token that represents the parameter that you specified in your trigger's relative path.

    Par exemple, supposons que vous souhaitiez que l’action de réponse retourne Postal Code: {postalCode}.For example, suppose that you want the Response action to return Postal Code: {postalCode}.

    Dans la propriété de corps, entrez Postal Code: avec un espace de fin.In the Body property, enter Postal Code: with a trailing space. Dans la liste de contenu dynamique qui s’affiche, sélectionnez la propriété postalCode.From the dynamic content list that appears, select the postalCode token.

    Ajouter le paramètre spécifié au corps de la réponse

    La propriété de corps contient désormais le paramètre sélectionné :The Body property now includes the selected parameter:

    Exemple de corps de la réponse avec le paramètre

  5. Enregistrez votre application logique.Save your logic app.

    Votre URL de point de terminaison HTTP inclut désormais le chemin d’accès relatif, par exemple :Your HTTP endpoint URL now includes the relative path, for example:

    https://prod-25.westus.logic.azure.com/workflows/{logic-app-resource-ID}/triggers/manual/paths/invoke/address/{postalCode}?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig={shared-access-signature}
    
  6. Pour tester votre point de terminaison HTTP, copiez et collez l’URL mise à jour dans une autre fenêtre de navigateur, mais remplacez {postalCode} par 123456, puis appuyez sur ENTRÉE.To test your HTTP endpoint, copy and paste the updated URL into another browser window, but replace {postalCode} with 123456, and press Enter.

    Votre navigateur affiche ce texte : Postal Code: 123456Your browser shows this text: Postal Code: 123456

Appeler une application logique via un point de terminaison HTTPCall logic app through HTTP endpoint

Après avoir créé le point de terminaison HTTP, vous pouvez déclencher l’application logique en envoyant une requête HTTP POST à l’URL complète du point de terminaison.After you create the HTTP endpoint, you can trigger the logic app by sending an HTTP POST request to the endpoint's full URL. Les applications logiques ont une prise en charge intégrée pour les points de terminaison à accès direct.Logic apps have built-in support for direct-access endpoints.

Jetons générés à partir du schémaTokens generated from schema

Lorsque vous fournissez un schéma JSON dans le déclencheur de requête, le concepteur d’application logique génère des jetons pour les propriétés de ce schéma.When you provide a JSON schema in the Request trigger, the Logic App Designer generates tokens for the properties in that schema. Vous pouvez ensuite utiliser ces jetons pour transmettre des données au workflow de votre application logique.You can then use those tokens for passing data through your logic app workflow.

Par exemple, si vous ajoutez d’autres propriétés, telles que "suite", à votre schéma JSON, vous pouvez utiliser des jetons pour ces propriétés dans les étapes ultérieures de votre application logique.For example, if you add more properties, such as "suite", to your JSON schema, tokens for those properties are available for you to use in the later steps for your logic app. Voici le schéma JSON complet :Here is the complete JSON schema:

   {
   "type": "object",
   "properties": {
      "address": {
         "type": "object",
         "properties": {
            "streetNumber": {
               "type": "string"
            },
            "streetName": {
               "type": "string"
            },
            "suite": {
               "type": "string"
            },
            "town": {
               "type": "string"
            },
            "postalCode": {
               "type": "string"
            }
         }
      }
   }
}

Créer des applications logiques imbriquéesCreate nested logic apps

Vous pouvez imbriquer des workflows dans votre application logique en ajoutant d’autres applications logiques qui peuvent recevoir des requêtes.You can nest workflows in your logic app by adding other logic apps that can receive requests. Pour inclure ces applications logiques, procédez comme suit :To include these logic apps, follow these steps:

  1. Sous l’étape lors de laquelle vous souhaitez appeler une autre application logique, sélectionnez Nouvelle étape > Ajouter une action.Under the step where you want to call another logic app, select New step > Add an action.

  2. Sous Choisir une action, sélectionnez Intégré.Under Choose an action, select Built-in. Dans la zone de recherche, entrez logic apps en guise de filtre.In the search box, enter logic apps as your filter. Dans la liste actions, sélectionnez Choisir un workflow Logic Apps.From the actions list, select Choose a Logic Apps workflow.

    Imbriquer une application logique à l’intérieur de l’application logique actuelle

    Le concepteur affiche les applications logiques éligibles parmi lesquelles vous pouvez choisir.The designer shows the eligible logic apps for you to select.

  3. Sélectionnez l’application logique à appeler à partir de votre application logique actuelle.Select the logic app to call from your current logic app.

    Sélectionner une application logique à appeler à partir de l’application logique actuelle

Référencer le contenu à partir d’une requête entranteReference content from an incoming request

Si le type de contenu de la requête entrante est application/json, vous pouvez référencer les propriétés dans la requête entrante.If the incoming request's content type is application/json, you can reference the properties in the incoming request. Sinon, ce contenu est traité comme une seule unité binaire que vous pouvez transmettre à d’autres API.Otherwise, this content is treated as a single binary unit that you can pass to other APIs. Pour référencer ce contenu dans le flux de travail de votre application logique, vous devez d’abord convertir ce contenu.To reference this content inside your logic app's workflow, you need to first convert that content.

Par exemple, si vous transmettez du contenu dont le type de application/xml est, vous pouvez utiliser l’expression @xpath() pour effectuer une extraction XPath ou utiliser l’expression @json() pour la conversion de XML en JSON.For example, if you're passing content that has application/xml type, you can use the @xpath() expression to perform an XPath extraction, or use the @json() expression for converting XML to JSON. En savoir plus sur l’utilisation des types de contenus pris en charge.Learn more about working with supported content types.

Pour obtenir la sortie à partir d’une requête entrante, vous pouvez utiliser l’expression @triggerOutputs .To get the output from an incoming request, you can use the @triggerOutputs expression. Par exemple, supposons que vous ayez une sortie ressemblant à l’exemple suivant :For example, suppose you have output that looks like this example:

{
   "headers": {
      "content-type" : "application/json"
   },
   "body": {
      "myProperty" : "property value"
   }
}

Pour accéder spécifiquement à la propriété body, vous pouvez utiliser l’expression @triggerBody() comme raccourci.To access specifically the body property, you can use the @triggerBody() expression as a shortcut.

Répondre aux requêtesRespond to requests

Parfois, vous souhaitez répondre à certaines demandes qui déclenchent votre application logique en renvoyant le contenu à l’appelant.Sometimes you want to respond to certain requests that trigger your logic app by returning content to the caller. Pour créer le code d’état, l’en-tête et le corps de votre réponse, utilisez l’action Réponse.To construct the status code, header, and body for your response, use the Response action. Cette action peut apparaître n’importe où dans votre application logique, et pas seulement à la fin de votre workflow.This action can appear anywhere in your logic app, not just at the end of your workflow. Si votre application logique n’inclut pas d’action Réponse, le point de terminaison HTTP répond immédiatement avec un état 202 - Accepté.If your logic app doesn't include a Response action, the HTTP endpoint responds immediately with the 202 Accepted status.

Pour que l’appelant d’origine obtienne la réponse, toutes les étapes nécessaires pour la réponse doivent être terminées avant la limite du délai d’expiration de la requête, sauf si l’application logique déclenchée est appelée en tant qu’application logique imbriquée.For the original caller to successfully get the response, all the required steps for the response must finish within the request timeout limit unless the triggered logic app is called as a nested logic app. Si aucune réponse n’est retournée avant cette limite, la requête entrante expire et reçoit la réponse 408 - Dépassement du délai d’expiration par le client.If no response is returned within this limit, the incoming request times out and receives the 408 Client timeout response.

Pour les applications logiques imbriquées, l’application logique parente continue à attendre une réponse jusqu’à ce que toutes les étapes aient été effectuées, quelle que soit la durée de l’opération.For nested logic apps, the parent logic app continues to wait for a response until all the steps are completed, regardless of how much time is required.

Construire la réponseConstruct the response

Vous pouvez inclure plusieurs en-têtes et n’importe quel type de contenu dans le corps de la réponse.In the response body, you can include multiple headers and any type of content. Par exemple, l’en-tête de cette réponse spécifie que le type de contenu de la réponse est application/json et que le corps contient des valeurs pour les propriétés town et postalCode, en fonction du schéma JSON décrit précédemment dans cette rubrique pour le déclencheur de requête.For example, this response's header specifies that the response's content type is application/json and that the body contains values for the town and postalCode properties, based on the JSON schema described earlier in this topic for the Request trigger.

Fournir le contenu de la réponse pour l’action de réponse HTTP

Les réponses ont ces propriétés :Responses have these properties:

Propriété (affichage)Property (Display) Propriété (JSON)Property (JSON) DescriptionDescription
Code d’étatStatus Code statusCode Le code d’état HTTP à utiliser dans la réponse pour la requête entrante.The HTTP status code to use in the response for the incoming request. Ce code peut être tout code d’état valide commençant par 2xx, 4xx ou 5xx.This code can be any valid status code that starts with 2xx, 4xx, or 5xx. Cependant, les codes d’état 3xx ne sont pas autorisés.However, 3xx status codes are not permitted.
En-têtesHeaders headers Un ou plusieurs en-têtes à inclure dans la réponseOne or more headers to include in the response
CorpsBody body Un objet corps peut être une chaîne, un objet JSON ou même du contenu binaire référencé à partir d’une étape précédenteA body object that can be a string, a JSON object, or even binary content referenced from a previous step

Pour afficher la définition JSON de l’action de réponse et de la définition JSON complète de votre application logique, sélectionnez Mode Code dans la barre d’outils du concepteur d’applications logiques.To view the JSON definition for the Response action and your logic app's complete JSON definition, on the Logic App Designer toolbar, select Code view.

"Response": {
   "type": "Response",
   "kind": "http",
   "inputs": {
      "body": {
         "postalCode": "@triggerBody()?['address']?['postalCode']",
         "town": "@triggerBody()?['address']?['town']"
      },
      "headers": {
         "content-type": "application/json"
      },
      "statusCode": 200
   },
   "runAfter": {}
}

Questions et réponsesQ & A

Q : Qu’en est-il de la sécurité de l’URL ?Q: What about URL security?

R : Les URL de rappel de l’application logique sont générées de façon sécurisée par Azure à l’aide d’une signature d’accès partagé (SAP).A: Azure securely generates logic app callback URLs by using Shared Access Signature (SAS). Cette signature est transmise directement comme paramètre de requête et doit être validée avant que votre application logique puisse être exécutée.This signature passes through as a query parameter and must be validated before your logic app can run. Azure génère cette signature via la combinaison unique d’une clé secrète par application logique, du nom du déclencheur et de l’opération qui est effectuée.Azure generates the signature using a unique combination of a secret key per logic app, the trigger name, and the operation that's performed. Ainsi, à moins que quelqu’un ait accès à la clé secrète de l’application logique, personne ne peut générer de signature valide.So unless someone has access to the secret logic app key, they cannot generate a valid signature.

Important

Pour les systèmes de production et sécurisés, nous vous recommandons vivement d’appeler votre application logique directement à partir du navigateur pour les raisons suivantes :For production and secure systems, we strongly advise against calling your logic app directly from the browser for these reasons:

  • la clé d’accès partagé s’affiche dans l’URL ;The shared access key appears in the URL.
  • vous ne pouvez pas gérer de stratégies de contenu sécurisé en raison du partage de domaines entre les clients Azure Logic Apps.You can't manage secure content policies due to shared domains across Azure Logic Apps customers.

Q : Puis-je configurer des points de terminaison HTTP de façon plus approfondie ?Q: Can I configure HTTP endpoints further?

R : Oui, les points de terminaison HTTP prennent en charge une configuration plus avancée par le biais de la Gestion des API Azure.A: Yes, HTTP endpoints support more advanced configuration through Azure API Management. Ce service vous offre également la possibilité de gérer toutes vos API de façon systématique, y compris les applications logiques, de configurer les noms de domaines personnalisés, d’utiliser plus de méthodes d’authentification et bien plus encore, comme par exemple :This service also offers the capability for you to consistently manage all your APIs, including logic apps, set up custom domain names, use more authentication methods, and more, for example:

Étapes suivantesNext steps