Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à : Azure Logic Apps (Consommation + Standard)
Azure Logic Apps prend en charge tous les types de contenu tels que JSON, XML, les fichiers plats et les données binaires. Bien que certains types de contenu aient une prise en charge native, ce qui signifie qu’ils n’ont pas besoin de transfert ou de conversion, d’autres types de contenu requièrent des ajustements pour vous donner le format requis.
Pour déterminer la meilleure façon de gérer le contenu ou les données dans les flux de travail, Azure Logic Apps utilise la Content-Type valeur d’en-tête dans les requêtes HTTP que les flux de travail obtiennent à partir d’appelants externes.
La liste suivante inclut quelques exemples de Content-Type valeurs qu’un flux de travail peut rencontrer :
- application/json (type natif)
- text/plain (type natif)
- application/xml et application/octet-stream
- Autres types de contenu
Ce guide décrit comment Azure Logic Apps gère différents types de contenu et montre comment effectuer un cast correct ou convertir ces types si nécessaire.
application/json
Pour une requête HTTP où la Content-Type valeur d’en-tête est application/json, Azure Logic Apps stocke et gère le contenu en tant qu’objet JSON (JavaScript Object Notation). Par défaut, vous pouvez analyser le contenu JSON sans transformation de type ni conversion. Vous pouvez également analyser ce contenu à l’aide d’une expression.
Par exemple, l’expression suivante utilise la body() fonction avec My_action, qui est le nom JSON d’une action prédécesseur dans le workflow :
body('My_action')['client']['animal-type'][0]
Les étapes suivantes décrivent le fonctionnement de l’expression sans transformation ni conversion :
La fonction
body()obtient l'objet de sortiebodyde l'actionMy_action.À partir de l’objet retourné
body, la fonction accède à l’objetclient.L’objet
clientcontient laanimal-typepropriété, qui est définie sur un tableau.La fonction accède au premier élément du tableau et retourne directement le chien de valeur sans conversion ni conversion.
Si vous utilisez des données JSON qui n’utilisent pas d’en-tête Content-Type , vous pouvez convertir manuellement ces données en JSON à l’aide de la fonction json(), par exemple :
json(triggerBody())['client']['animal-type']
La
triggerBody()fonction obtient l’objetbodyà partir de la sortie du déclencheur du flux de travail. Cet objet est généralement un objet JSON.La source de l’objet
bodyprovient de la requête HTTP entrante ou de l’événement reçu par le déclencheur de flux de travail.La
json()fonction analyse explicitement l’objetbodyretourné par latriggerBody()fonction en tant qu’objet JSON.Ce comportement est utile, par exemple, lorsque le corps du déclencheur est une chaîne qui nécessite la gestion au format JSON.
Le comportement de l’expression restante est similaire à l’exemple précédent.
Créer des jetons pour les propriétés JSON
Dans Azure Logic Apps, vous pouvez générer des jetons conviviaux qui représentent les propriétés dans le contenu JSON. Vous pouvez ensuite utiliser ces jetons pour vous permettre de référencer plus facilement ces propriétés et leurs valeurs dans votre workflow.
La liste suivante décrit les opérations de flux de travail courantes et les méthodes correspondantes pour générer des jetons pour les propriétés dans le contenu JSON :
Déclencheur de requête nommé Lorsqu’une requête HTTP est reçue
Lorsque vous travaillez dans le concepteur avec le déclencheur De requête , vous pouvez éventuellement fournir un schéma JSON qui définit les objets, propriétés et les types de données attendus pour chaque valeur de propriété. Si vous n’avez pas de schéma JSON, vous pouvez fournir un exemple de charge utile pour générer un schéma JSON que vous pouvez utiliser.
Le déclencheur utilise le schéma pour analyser le contenu JSON à partir de requêtes HTTP entrantes et générer des jetons qui représentent les propriétés dans le contenu JSON. Vous pouvez ensuite facilement référencer et utiliser ces propriétés et leurs valeurs dans les actions suivantes dans votre flux de travail.
Les étapes suivantes décrivent comment vous pouvez fournir un exemple de charge utile pour générer un schéma JSON :
Dans le concepteur, sélectionnez le déclencheur Request pour ouvrir le volet d'informations.
Sous l’onglet Paramètres , sous la zone Schéma JSON du corps de la requête, sélectionnez Utiliser l’exemple de charge utile pour générer le schéma.
Dans la zone Entrez ou collez un exemple de charge utile JSON, entrez un exemple de charge utile, puis sélectionnez Terminé.
Le schéma généré apparaît désormais dans votre déclencheur.
Dans l’éditeur de vue de code, vous pouvez passer en revue la définition JSON sous-jacente du déclencheur de requête :
"triggers": { "When_an_HTTP_request_is_received": { "type": "Request", "kind": "Http", "inputs": { "schema": { "type": "object", "properties": { "client": { "type": "object", "properties": { "animal-type": { "type": "array", "items": { "type": "string" }, }, "name": { "type": "string" } } } } } } } }Pour déclencher votre flux de travail, obtenez l’URL du flux de travail ou l’URL HTTP du déclencheur, qui est générée après avoir enregistré le flux de travail pour la première fois.
Pour tester le flux de travail, utilisez un outil client ou une application à partir duquel vous pouvez envoyer une requête HTTP à l’URL du flux de travail ou à l’URL du déclencheur. Vérifiez que la requête inclut un en-tête nommé Content-Type et que la valeur d’en-tête est définie sur application/json.
Action d’analyse de JSON
Lorsque vous utilisez cette action dans le concepteur, vous pouvez analyser la sortie JSON et générer des jetons conviviaux qui représentent les propriétés de votre contenu JSON. Vous pouvez ensuite facilement référencer et utiliser ces propriétés dans l’ensemble de flux de travail de votre application logique.
À l’instar du déclencheur de requête, vous pouvez fournir ou générer un schéma JSON qui décrit le contenu JSON que vous souhaitez analyser. De cette façon, vous pouvez utiliser plus facilement les données à partir d’Azure Service Bus, Azure Cosmos DB, et ainsi de suite.
texte/brut
Si votre flux de travail reçoit des requêtes HTTP où la valeur de l'en-tête est Content-Type. Azure Logic Apps stocke et gère le contenu sous forme brute. Si vous référencez ou utilisez ce contenu dans les actions de flux de travail suivantes sans conversion ou transtypage, les requêtes sortantes ont également la valeur d’en-tête Content-Type définie sur text/plain.
Par exemple, supposons que vous utilisez un fichier plat et que la requête HTTP entrante a la Content-Type valeur d’en-tête définie sur text/plain:
Date,Name,Address
Oct-1,Frank,123 Ave
Si vous envoyez cette requête à une action suivante qui utilise le corps de la requête pour envoyer une autre requête, la deuxième demande a également la valeur d’en-tête Content-Type définie sur text/plain. Si vous utilisez des données en texte brut mais que vous n’avez pas spécifié d’en-tête, vous pouvez convertir manuellement ces données en texte à l’aide de la string() fonction, par exemple :
string(triggerBody())
application/xml et application/octet-stream
Azure Logic Apps conserve toujours la Content-Type valeur d’en-tête dans une requête ou une réponse HTTP entrante. Si votre flux de travail reçoit du contenu défini Content-Type sur application/octet-stream et que vous incluez ce contenu dans une action ultérieure sans caster, la requête sortante est également définie Content-Type sur application/octet-stream. Cette approche garantit que les données ne sont pas perdues lors du déplacement du flux de travail. Dans les flux de travail avec état, l’état, les entrées et les sorties de l’action suivante sont stockés dans un objet JSON tandis que l’état passe par le flux de travail.
Fonctions de conversion
Pour conserver certains types de données, Azure Logic Apps convertit le contenu en chaîne codée en base64 binaire. Cette chaîne a les métadonnées appropriées qui conservent à la fois la charge utile $content et le $content-type, qui sont automatiquement convertis.
La liste suivante décrit comment Azure Logic Apps convertit le contenu lorsque vous utilisez des fonctions spécifiques :
-
json(): convertit les données enapplication/json. -
xml(): convertit les données enapplication/xml. -
binary(): convertit les données enapplication/octet-stream. -
string(): convertit les données entext/plain. -
base64(): convertit le contenu en chaîne encodée en base64. -
base64toString(): convertit une chaîne encodée en base64 entext/plain. -
base64toBinary(): convertit une chaîne encodée en base64 enapplication/octet-stream. -
dataUri(): convertit une chaîne en URI de données. -
dataUriToBinary(): convertit un URI de données en chaîne binaire. -
dataUriToString(): convertit un URI de données en chaîne.
Par exemple, supposons que votre déclencheur de flux de travail reçoit une requête HTTP avec Content-Type défini sur application/xml, où le contenu ressemble à l'exemple suivant :
<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>
Vous pouvez convertir ce contenu à l’aide de l’expression suivante, qui utilise les fonctions xml() et triggerBody() :
xml(triggerBody())
Vous pouvez ensuite utiliser le contenu résultant avec les actions suivantes dans le flux de travail. Vous pouvez également utiliser l’expression suivante qui exploite les fonctions xpath() et xml() à la place.
xpath(xml(triggerBody()), '/CustomerName')
Autres types de contenu
Azure Logic Apps prend en charge d’autres types de contenu, mais peut nécessiter que vous obteniez manuellement le corps du message à partir d’une requête HTTP en décodant la $content variable.
Par exemple, supposons que votre flux de travail reçoit une requête HTTP où Content-Type est défini sur application/x-www-url-formencoded. Pour conserver toutes les données, le corps de la requête inclut la $content variable dans laquelle la charge utile est encodée en tant que chaîne base64 :
CustomerName=Frank&Address=123+Avenue
Ce type de contenu n’est pas au format texte brut ou JSON. Par conséquent, Azure Logic Apps stocke CustomerName=Frank&Address=123+Avenue à l’aide des variables suivantes $content-type$content :
"body": {
"$content-type": "application/x-www-url-formencoded",
"$content": "AAB1241BACDFA=="
}
Azure Logic Apps inclut également des fonctions natives pour gérer les données de formulaire, par exemple :
Vous pouvez également accéder manuellement aux données à l’aide d’une expression telle que l’exemple suivant :
string(body('formdataAction'))
Pour effectuer une requête sortante, utilisez application/x-www-url-formencoded comme valeur d’en-tête Content-Type, et ajoutez le contenu de la requête au corps de l’action sans effectuer de conversion à l’aide d’une expression telle que body('formdataAction'). Cette méthode fonctionne uniquement si le corps de l’action est le seul paramètre de l’objet d’entrée body . Si vous utilisez l’expression body('formdataAction') dans une requête où le type de contenu est application/json, vous obtenez une erreur d’exécution, car le corps est envoyé encodé.