Appeler, déclencher ou imbriquer des workflows avec des points de terminaison HTTP dans Azure Logic AppsCall, trigger, or nest workflows with HTTP endpoints in Azure Logic Apps

Vous pouvez exposer en mode natif les points de terminaison HTTP synchrones en tant que déclencheurs sur des applications logiques, afin que vous puissiez déclencher ou appeler vos applications logiques via une URL.You can natively expose synchronous HTTP endpoints as triggers on logic apps so that you can trigger or call your logic apps through a URL. Vous pouvez également imbriquer des workflows dans vos applications logiques à l’aide d’un modèle de points de terminaison pouvant être appelés.You can also nest workflows in your logic apps by using a pattern of callable endpoints.

Pour créer des points de terminaison HTTP, vous pouvez ajouter ces déclencheurs afin que vos applications logiques puissent recevoir des requêtes entrantes :To create HTTP endpoints, you can add these triggers so that your logic apps can receive incoming requests:

Configurer un point de terminaison HTTP pour votre application logiqueSet up an HTTP endpoint for your logic app

Pour créer un point de terminaison HTTP, ajoutez un déclencheur qui peut recevoir des requêtes entrantes.To create an HTTP endpoint, add a trigger that can receive incoming requests.

  1. Connectez-vous au portail Azure.Sign in to the Azure portal. Accédez à votre application logique et ouvrez le Concepteur d’application logique.Go to your logic app, and open Logic App Designer.

  2. Ajoutez un déclencheur qui permet à votre application logique de recevoir des requêtes entrantes.Add a trigger that lets your logic app receive incoming requests. Par exemple, ajoutez le déclencheur Requête à votre application logique.For example, add the Request trigger to your logic app.

  3. Sous Schéma JSON du corps de la requête, vous pouvez éventuellement entrer un schéma JSON pour la charge utile (données) que le déclencheur est susceptible de recevoir.Under Request Body JSON Schema, you can optionally enter a JSON schema for the payload (data) that you expect the trigger to receive.

    Le concepteur utilise ce schéma pour générer des jetons que votre application logique peut utiliser pour consommer, analyser et transmettre des données à partir du déclencheur via votre workflow.The designer uses this schema for generating tokens that your logic app can use to consume, parse, and pass data from the trigger through your workflow. Cliquez sur le lien renvoyant à la section Jetons générés à partir de schémas JSON pour votre application logique pour en savoir plus.More about tokens generated from JSON schemas.

    Pour cet exemple, entrez le schéma affiché dans le concepteur :For this example, enter the schema shown in the designer:

    {
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        }
      },
      "required": [
        "address"
      ]
    }
    

    Ajouter l’action de la requête

    Conseil

    Vous pouvez générer un schéma pour un exemple de charge utile JSON à partir d’un outil tel que jsonschema.net, ou dans le déclencheur de requête en choisissant Utiliser l’exemple de charge utile pour générer le schéma.You can generate a schema for a sample JSON payload from a tool like jsonschema.net, or in the Request trigger by choosing Use sample payload to generate schema. Entrez votre exemple de charge utile et choisissez Terminé.Enter your sample payload, and choose Done.

    Par exemple, cet exemple de charge utile :For example, this sample payload:

    {
       "address": "21 2nd Street, New York, New York"
    }
    

    génère ce schéma :generates this schema:

    {
       "type": "object",
       "properties": {
          "address": {
             "type": "string" 
          }
       }
    }
    
  4. Enregistrez votre application logique.Save your logic app. Sous POST HTTP pour cette URL, vous devez maintenant rechercher une URL de rappel générée, comme dans cet exemple :Under HTTP POST to this URL, you should now find a generated callback URL, like this example:

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

    Cette URL contient une clé de signature d’accès partagé (SAP) dans les paramètres de requête utilisés pour l’authentification.This URL contains a Shared Access Signature (SAS) key in the query parameters that are used for authentication. Vous pouvez également obtenir l’URL de point de terminaison HTTP à partir de la vue d’ensemble de votre application logique dans le portail Azure.You can also get the HTTP endpoint URL from your logic app overview in the Azure portal. Sous Historique du déclencheur, sélectionnez votre déclencheur :Under Trigger History, select your trigger:

    Obtenir 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-resourceID}/triggers/{myendpointtrigger}/listCallbackURL?api-version=2016-06-01
    

Modifier la méthode HTTP pour votre déclencheurChange the HTTP method for your trigger

Par défaut, le déclencheur de requête attend une requête HTTP POST, mais vous pouvez utiliser une méthode HTTP différente.By default, the Request trigger expects an HTTP POST request, but you can use a different HTTP method.

Notes

Vous pouvez spécifier un seul type de méthode.You can specify only one method type.

  1. Sur votre déclencheur de requête, choisissez Afficher les options avancées.On your Request trigger, choose Show advanced options.

  2. Ouvrez la liste Méthode.Open the Method list. Dans cet exemple, sélectionnez GET pour pouvoir tester ultérieurement l’URL de votre point de terminaison HTTP.For this example, select GET so that you can test your HTTP endpoint's URL later.

    Notes

    Vous pouvez sélectionner n’importe quelle autre méthode HTTP, ou spécifier une méthode personnalisée pour votre propre application logique.You can select any other HTTP method, or specify a custom method for your own logic app.

    Changer de méthode HTTP

Accepter les paramètres via votre URL de point de terminaison HTTPAccept parameters through your HTTP endpoint URL

Lorsque vous souhaitez que votre URL de point de terminaison HTTP accepte des paramètres, personnalisez le chemin d’accès relatif de votre déclencheur.When you want your HTTP endpoint URL to accept parameters, customize your trigger's relative path.

  1. Sur votre déclencheur de requête, choisissez Afficher les options avancées.On your Request trigger, choose Show advanced options.

  2. Sous Méthode, spécifiez la méthode HTTP que vous souhaitez que votre requête utilise.Under Method, specify the HTTP method that you want your request to use. Dans cet exemple, sélectionnez la méthode GET, si vous ne l’avez pas déjà fait, pour pouvoir tester l’URL de votre point de terminaison HTTP.For this example, select the GET method, if you haven't already, so that you can test your HTTP endpoint's URL.

    Notes

    Lorsque vous spécifiez un chemin d’accès relatif pour votre déclencheur, vous devez également spécifier explicitement une méthode HTTP pour votre déclencheur.When you specify a relative path for your trigger, you must also explicitly specify an HTTP method for your trigger.

  3. Sous Chemin d’accès relatif, spécifiez le chemin d’accès relatif du paramètre que votre URL doit accepter, par exemple customers/{customerID}.Under Relative path, specify the relative path for the parameter that your URL should accept, for example, customers/{customerID}.

    Spécifier la méthode HTTP et le chemin d’accès relatif pour le paramètre

  4. Pour utiliser le paramètre, ajoutez une action Response à votre application logique.To use the parameter, add a Response action to your logic app. (Sous votre déclencheur, choisissez Nouvelle étape > Ajouter une action > Response)(Under your trigger, choose New step > Add an action > Response)

  5. Pour la valeur Corps de votre réponse, incluez le jeton pour le paramètre que vous avez spécifié dans le chemin d’accès relatif de votre déclencheur.In your response's Body, include the token for the parameter that you specified in your trigger's relative path.

    Par exemple, pour renvoyer Hello {customerID}, mettez à jour la valeur Corps de votre réponse avec Hello {customerID token}.For example, to return Hello {customerID}, update your response's Body with Hello {customerID token}. La liste de contenu dynamique doit apparaître et afficher le jeton customerID à sélectionner.The dynamic content list should appear and show the customerID token for you to select.

    Ajouter un paramètre au corps de la réponse

    Votre valeur Corps doit ressembler à cet exemple :Your Body should look like this example:

    Corps de la réponse avec le paramètre

  6. 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-00.southcentralus.logic.azure.com/workflows/f90cb66c52ea4e9cabe0abf4e197deff/triggers/manual/paths/invoke/customers/{customerID}...https://prod-00.southcentralus.logic.azure.com/workflows/f90cb66c52ea4e9cabe0abf4e197deff/triggers/manual/paths/invoke/customers/{customerID}...

  7. Pour tester votre point de terminaison HTTP, copiez et collez l’URL mise à jour dans une autre fenêtre de navigateur, mais remplacez {customerID} par 123456, puis appuyez sur ENTRÉE.To test your HTTP endpoint, copy and paste the updated URL into another browser window, but replace {customerID} with 123456, and press Enter.

    Votre navigateur doit afficher le texte suivant :Your browser should show this text:

    Hello 123456

Jetons générés à partir de schémas JSON pour votre application logiqueTokens generated from JSON schemas for your logic app

Lorsque vous fournissez un schéma JSON dans votre 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 your Request trigger, the Logic App Designer generates tokens for 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.

Pour cet exemple, si vous ajoutez les propriétés title et name à votre schéma JSON, leurs jetons sont désormais disponibles pour être utilisés dans les étapes ultérieures du workflow.For this example, if you add the title and name properties to your JSON schema, their tokens are now available to use in later workflow steps.

Voici le schéma JSON complet :Here is the complete JSON schema:

{
   "type": "object",
   "properties": {
      "address": {
         "type": "string"
      },
      "title": {
         "type": "string"
      },
      "name": {
         "type": "string"
      }
   },
   "required": [
      "address",
      "title",
      "name"
   ]
}

Créer des workflows imbriqués pour les applications logiquesCreate nested workflows for 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, ajoutez l’action Azure Logic Apps - Choisir un workflow Logic Apps à votre déclencheur.To include these logic apps, add the Azure Logic Apps - Choose a Logic Apps workflow action to your trigger. Vous pouvez ensuite choisir entre des applications logiques éligibles.You can then select from eligible logic apps.

Ajouter une autre application logique

Appeler ou déclencher des applications logiques via des points de terminaison HTTPCall or trigger logic apps through HTTP endpoints

Une fois que vous avez créé votre point de terminaison HTTP, vous pouvez déclencher votre application logique via une méthode POST vers l’URL complète.After you create your HTTP endpoint, you can trigger your logic app through a POST method to the 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.

Notes

Pour exécuter manuellement une application logique à tout moment, dans la barre d’outils Concepteur d’application logique ou Affichage du code de l’application logique, choisissez Exécuter.To manually run a logic app at any time, on the Logic App Designer or Logic App Code View toolbar, choose Run.

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

Si le type de contenu est application/json, vous pouvez référencer des propriétés à partir de la requête entrante.If the content's type is application/json, you can reference properties from the incoming request. Sinon, le contenu est traité comme une seule unité binaire que vous pouvez transmettre à d’autres API.Otherwise, content is treated as a single binary unit that you can pass to other APIs. Pour référencer ce contenu dans le workflow, vous devez le convertir.To reference this content inside the workflow, you must convert that content. Par exemple, si vous transmettez le contenu application/xml, vous pouvez utiliser @xpath() pour une extraction XPath, ou @json() pour effectuer la conversion de XML vers JSON.For example, if you pass application/xml content, you can use @xpath() for an XPath extraction, or @json() for converting XML to JSON. Découvrez plus en détail comment utiliser les types de contenu.Learn about working with content types.

Pour obtenir la sortie à partir d’une requête entrante, vous pouvez utiliser la fonction @triggerOutputs().To get the output from an incoming request, you can use the @triggerOutputs() function. La sortie peut ressembler à cet exemple :The output might look like this example:

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

Pour accéder à la propriété body, vous pouvez utiliser le raccourci @triggerBody().To access the body property specifically, you can use the @triggerBody() shortcut.

Répondre aux requêtesRespond to requests

Vous souhaitez peut-être répondre à certaines requêtes qui démarrent une application logique en renvoyant du contenu à l’appelant.You might want to respond to certain requests that start a 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, vous pouvez utiliser l’action Response.To construct the status code, header, and body for your response, you can 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.

Notes

Si votre application logique n’inclut pas d’action Response, le point de terminaison HTTP répond immédiatement avec un état 202 - Accepté.If your logic app doesn't include a Response, the HTTP endpoint responds immediately with a 202 Accepted status. En outre, pour que la requête 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 vous appelez le workflow en tant qu’application logique imbriquée.Also, for the original request to get the response, all steps required for the response must finish within the request timeout limit unless you call the workflow as a nested logic app. Si aucune réponse n’est produite avant cette limite, la requête entrante expire et reçoit la réponse HTTP 408 - Dépassement du délai d’expiration par le client.If no response happens within this limit, the incoming request times out and receives the HTTP response 408 Client timeout. Pour les applications logiques imbriquées, l’application logique parente continue à attendre une réponse jusqu’à ce qu’elle se termine, 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 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.You can include more than one header and any type of content in the response body. Dans l’exemple de réponse, l’en-tête spécifie que la réponse a le type de contenu application/json.In the example response, the header specifies that the response has content type application/json. et que le corps contient title et name, selon le schéma JSON mis à jour précédemment pour le déclencheur de requête.and the body contains title and name, based on the JSON schema updated previously for the Request trigger.

Action HTTP Response

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

PropriétéProperty DescriptionDescription
statusCodestatusCode Indique le code d’état HTTP pour répondre à la requête entrante.Specifies the HTTP status code for responding to 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.
headersheaders Définit un nombre quelconque d’en-têtes à inclure dans la réponse.Defines any number of headers to include in the response.
bodybody Indique un objet corps qui peut être une chaîne, un objet JSON ou même du contenu binaire référencé à partir d’une étape précédente.Specifies a body object that can be a string, a JSON object, or even binary content referenced from a previous step.

Voici à quoi ressemble désormais le schéma JSON pour l’action Response :Here's what the JSON schema looks like now for the Response action:

"Response": {
   "inputs": {
      "body": {
         "title": "@{triggerBody()?['title']}",
         "name": "@{triggerBody()?['name']}"
      },
      "headers": {
           "content-type": "application/json"
      },
      "statusCode": 200
   },
   "runAfter": {},
   "type": "Response"
}

Conseil

Pour afficher la définition JSON complète de votre application logique, choisissez mode Code dans le Concepteur d’application logique.To view the complete JSON definition for your logic app, on the Logic App Designer, choose Code view.

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 using a 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 déclenchée.This signature passes through as a query parameter and must be validated before your logic app can fire. 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 déconseillons fortement d’appeler votre application logique directement à partir du navigateur, car :For production and secure systems, we strongly recommend against calling your logic app directly from the browser because:

  • 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 de l’application logique.You can't manage secure content policies due to shared domains across Logic App 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.A: Yes, HTTP endpoints support more advanced configuration through 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:

Q : Qu’est-ce qui a changé suite à la migration du schéma à partir de la préversion du 1er décembre 2014 ?Q: What changed when the schema migrated from the December 1, 2014 preview?

R : Voici un récapitulatif des changements apportés :A: Here's a summary about these changes:

Version préliminaire du 1er décembre 2014December 1, 2014 preview 1er juin 2016June 1, 2016
Cliquez sur l’application API Écouteur HTTPClick HTTP Listener API App Cliquez sur Déclenchement manuel (aucune application API nécessaire)Click Manual trigger (no API App required)
Paramètre d’écouteur HTTP «Envoie une réponse automatiquement»HTTP Listener setting "Sends response automatically" Incluez ou non une action Response dans la définition du workflowEither include a Response action or not in the workflow definition
Configurez l’authentification de base ou OAuthConfigure Basic or OAuth authentication via la gestion des APIvia API Management
Configurer la méthode HTTPConfigure HTTP method Sous Afficher les options avancées, choisissez une méthode HTTPUnder Show advanced options, choose an HTTP method
Configurer le chemin d’accès relatifConfigure relative path Sous Afficher les options avancées, ajoutez un chemin d’accès relatifUnder Show advanced options, add a relative path
Référencez le corps entrant par le biais de @triggerOutputs().body.ContentReference the incoming body through @triggerOutputs().body.Content Référencez via @triggerOutputs().bodyReference through @triggerOutputs().body
Envoyer une réponse HTTP sur l’écouteur HTTPSend HTTP response action on the HTTP Listener Cliquez sur Répondre à la requête HTTP (aucune application API nécessaire)Click Respond to HTTP request (no API App required)

Obtenir de l’aideGet help

Pour poser des questions ou y répondre et voir ce que font les autres utilisateurs d’Azure Logic Apps, visitez le Forum Azure Logic Apps.To ask questions, answer questions, and learn what other Azure Logic Apps users are doing, visit the Azure Logic Apps forum.

Afin d’améliorer Azure Logic Apps ainsi que les connecteurs, votez pour des idées ou soumettez-en sur le site de commentaires utilisateur Azure Logic Apps.To help improve Azure Logic Apps and connectors, vote on or submit ideas at the Azure Logic Apps user feedback site.

Étapes suivantesNext steps