Delen via


Typen inhoud in Azure Logic Apps afhandelen

Van toepassing op: Azure Logic Apps (Verbruik + Standard)

Azure Logic Apps ondersteunt alle inhoudstypen, zoals JSON, XML, platte bestanden en binaire gegevens. Hoewel sommige inhoudstypen systeemeigen ondersteuning hebben, wat betekent dat ze geen cast- of conversie nodig hebben, hebben andere inhoudstypen werk nodig om u de vereiste indeling te geven.

Azure Logic Apps gebruikt de headerwaarde in de Content-Type HTTP-aanvragen die werkstromen ontvangen van externe bellers om te bepalen hoe u inhoud of gegevens in werkstromen het beste kunt verwerken.

De volgende lijst bevat enkele voorbeeldwaarden Content-Type die een werkstroom kan tegenkomen:

In deze handleiding wordt beschreven hoe Azure Logic Apps verschillende inhoudstypen verwerkt en hoe u deze typen correct kunt casten of converteren wanneer dat nodig is.

application/json

Voor een HTTP-aanvraag waarbij de Content-Type headerwaarde application/json is, slaat Azure Logic Apps de inhoud op als een JSON-object (JavaScript Object Notation). Standaard kunt u JSON-inhoud parseren zonder casting of conversie. U kunt deze inhoud ook parseren met behulp van een expressie.

De volgende expressie gebruikt bijvoorbeeld de body() functie met My_action, de JSON-naam voor een voorafgaande actie in de werkstroom:

body('My_action')['client']['animal-type'][0]

In de volgende stappen wordt beschreven hoe de uitdrukking werkt zonder casting of conversie.

  1. Met body() de functie wordt het body uitvoerobject opgehaald uit de My_action actie.

  2. Vanuit het geretourneerde body object heeft de functie toegang tot het client object.

    Het client object bevat de animal-type eigenschap, die is ingesteld op een matrix.

  3. De functie heeft toegang tot het eerste item in de array en retourneert rechtstreeks de waarde hond zonder casting of conversie.

Als u werkt met JSON-gegevens die geen header gebruiken Content-Type , kunt u die gegevens handmatig converteren naar JSON met behulp van de functie json(), bijvoorbeeld:

json(triggerBody())['client']['animal-type']

  1. De triggerBody() functie haalt het body object op uit de triggeruitvoer van de werkstroom. Dit object is doorgaans een JSON-object.

    De bron voor het body object is afkomstig van de inkomende HTTP-aanvraag of gebeurtenis die is ontvangen door de werkstroomtrigger.

  2. De json() functie parseert het body object dat wordt geretourneerd door de triggerBody() functie expliciet als een JSON-object.

    Dit gedrag is bijvoorbeeld handig wanneer de hoofdtekst van de trigger een tekenreeks is die verwerking als JSON vereist.

Het resterende expressiegedrag is vergelijkbaar met het vorige voorbeeld.

Tokens maken voor JSON-eigenschappen

In Azure Logic Apps kunt u gebruiksvriendelijke tokens genereren die de eigenschappen in JSON-inhoud vertegenwoordigen. U kunt deze tokens vervolgens gebruiken, zodat u gemakkelijker naar deze eigenschappen en hun waarden in uw werkstroom kunt verwijzen.

In de volgende lijst worden algemene werkstroombewerkingen en de bijbehorende manieren beschreven waarop u tokens voor eigenschappen in JSON-inhoud kunt genereren:

  • Aanvraagtrigger met de naam Wanneer een HTTP-aanvraag wordt ontvangen

    Wanneer u in de ontwerpfunctie met de aanvraagtrigger werkt, kunt u desgewenst een JSON-schema opgeven waarmee de JSON-objecten, eigenschappen en de verwachte gegevenstypen voor elke eigenschapswaarde worden gedefinieerd. Als u geen JSON-schema hebt, kunt u een voorbeeld van een nettolading opgeven om een JSON-schema te genereren dat u kunt gebruiken.

    De trigger gebruikt het schema om JSON-inhoud te parseren van binnenkomende HTTP-aanvragen en tokens te genereren die de eigenschappen in de JSON-inhoud vertegenwoordigen. U kunt deze eigenschappen en de bijbehorende waarden vervolgens eenvoudig raadplegen en gebruiken in volgende acties in uw werkstroom.

    In de volgende stappen wordt beschreven hoe u een voorbeeldpayload kunt opgeven om een JSON-schema te genereren:

    1. Selecteer in de ontwerpfunctie de aanvraagtrigger om het informatievenster te openen.

    2. Selecteer op het tabblad Parameters, onder het vak JSON-schema voor aanvraagbody, voorbeeldpayload gebruiken om een schema te genereren.

    3. Voer een voorbeeld van een JSON-payload in in het vak en selecteer Gereed.

      Schermopname van de aanvraagtrigger met de naam Wanneer een HTTP-aanvraag wordt ontvangen plus een voorbeeld van een JSON-nettolading.

      Het gegenereerde schema wordt nu weergegeven in uw trigger.

      Schermopname van het JSON-schema dat is gegenereerd op basis van de JSON-voorbeeldpayload.

      In de codeweergave-editor kunt u de onderliggende JSON-definitie voor de aanvraagtrigger controleren:

      "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"
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      
    4. Als u uw werkstroom wilt activeren, haalt u de URL van de werkstroom of de HTTP-URL van de trigger op, die wordt gegenereerd nadat u de werkstroom voor het eerst hebt opgeslagen.

    5. Als u de werkstroom wilt testen, gebruikt u een clienthulpprogramma of app van waaruit u een HTTP-aanvraag kunt verzenden naar de url van de werkstroom of trigger-URL. Zorg ervoor dat de aanvraag een header met de naam Content-Type bevat en dat de headerwaarde is ingesteld op application/json.

  • JSON-actie parseren

    Wanneer u deze actie in de ontwerpfunctie gebruikt, kunt u JSON-uitvoer parseren en gebruiksvriendelijke tokens genereren die de eigenschappen in uw JSON-inhoud vertegenwoordigen. U kunt deze eigenschappen vervolgens eenvoudig raadplegen en gebruiken in de werkstroom van uw logische app.

    Net als bij de aanvraagtrigger kunt u een JSON-schema opgeven of genereren dat de JSON-inhoud beschrijft die u wilt parseren. Op die manier kunt u eenvoudiger gegevens van Azure Service Bus, Azure Cosmos DB, enzovoort gebruiken.

    Schermopname van een JSON-actie parseren met een schema dat is gegenereerd op basis van een voorbeeld.

text/plain

Als uw werkstroom HTTP-aanvragen ontvangt waarbij de Content-Type headerwaarde tekst/tekst zonder opmaak is. Azure Logic Apps slaat de inhoud op in onbewerkte vorm en verwerkt deze. Als u naar deze inhoud verwijst of gebruikt in volgende werkstroomacties zonder cast- of conversiebewerkingen, hebben uitgaande aanvragen ook de Content-Type headerwaarde ingesteld op text/plain.

Stel je voor dat u met een plat bestand werkt en dat voor de inkomende HTTP-aanvraag de Content-Type header-waarde op text/plain is ingesteld.

Date,Name,Address
Oct-1,Frank,123 Ave

Als u deze aanvraag verzendt naar een volgende actie die gebruikmaakt van de aanvraagbody om een andere aanvraag te verzenden, heeft de tweede aanvraag ook de Content-Type headerwaarde ingesteld op text/plain. Als u met gegevens in tekst zonder opmaak werkt, maar geen koptekst hebt opgegeven, kunt u deze gegevens handmatig naar tekst casten met behulp van de string() functie, bijvoorbeeld:

string(triggerBody())

application/xml en application/octet-stream

Azure Logic Apps behoudt altijd de Content-Type headerwaarde in een inkomende HTTP-aanvraag of -reactie. Als uw werkstroom inhoud ontvangt die Content-Type is ingesteld op de toepassings-/octetstream en u die inhoud opneemt in een volgende actie zonder cast-conversie, wordt de uitgaande aanvraag ook ingesteld Content-Type op application/octet-stream. Deze aanpak zorgt ervoor dat gegevens niet verloren gaan tijdens het doorlopen van de werkstroom. In stateful werkstromen worden de status, invoer en uitvoer van de volgende actie opgeslagen in een JSON-object terwijl de status door de werkstroom wordt verplaatst.

Conversieprogrammafuncties

Als u bepaalde gegevenstypen wilt behouden, converteert Azure Logic Apps inhoud naar een binaire met base64 gecodeerde tekenreeks. Deze tekenreeks bevat de juiste metagegevens die zowel de $content payload als de $content-type, welke automatisch worden geconverteerd, behouden.

In de volgende lijst wordt beschreven hoe Azure Logic Apps inhoud converteert wanneer u specifieke functies gebruikt:

  • json(): Converteert data naar application/json.
  • xml(): Converteert data naar application/xml.
  • binary(): Converteert data naar application/octet-stream.
  • string(): Converteert data naar text/plain.
  • base64(): converteert inhoud naar een met base64 gecodeerde tekenreeks.
  • base64toString(): converteert een met base64 gecodeerde tekenreeks naar text/plain.
  • base64toBinary(): converteert een met base64 gecodeerde tekenreeks naar application/octet-stream.
  • dataUri(): converteert een tekenreeks naar een gegevens-URI.
  • dataUriToBinary(): converteert een gegevens-URI naar een binaire tekenreeks.
  • dataUriToString(): converteert een gegevens-URI naar een tekenreeks.

Stel dat uw werkstroomtrigger een HTTP-aanvraag ontvangt, waar Content-Type is ingesteld op application/xml, waarbij de inhoud eruitziet zoals in het volgende voorbeeld:

<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>

U kunt deze inhoud casten met behulp van de volgende expressie, die gebruikmaakt van de xml() en triggerBody() functies:

xml(triggerBody())

Vervolgens kunt u de resulterende inhoud gebruiken met volgende acties in de werkstroom. U kunt ook de volgende expressie gebruiken die in plaats daarvan gebruikmaakt van de xpath() en xml() functies:

xpath(xml(triggerBody()), '/CustomerName')

Andere inhoudstypen

Azure Logic Apps ondersteunt andere inhoudstypen, maar mogelijk moet u de berichttekst handmatig ophalen uit een HTTP-aanvraag door de variabele te $content decoderen.

Stel dat uw werkstroom een HTTP-aanvraag ontvangt waar Content-Type is ingesteld op application/x-www-url-formencoded. Als u alle gegevens wilt behouden, bevat de aanvraagbody de $content variabele waarin de nettolading wordt gecodeerd als een base64-tekenreeks:

CustomerName=Frank&Address=123+Avenue

Dit inhoudstype is noch in platte tekst noch in JSON-formaat, dus Azure Logic Apps slaat CustomerName=Frank&Address=123+Avenue op met behulp van de volgende $content-type en $content variabelen.

"body": {
   "$content-type": "application/x-www-url-formencoded",
   "$content": "AAB1241BACDFA=="
}

Azure Logic Apps bevat ook systeemeigen functies voor het verwerken van formuliergegevens, bijvoorbeeld:

U kunt de gegevens ook handmatig openen met behulp van een expressie zoals in het volgende voorbeeld:

string(body('formdataAction'))

Om een uitgaande aanvraag te doen, gebruik application/x-www-url-formencoded als Content-Type headerwaarde, voeg de aanvraaginhoud toe aan de hoofdtekst van de actie zonder conversie of casting, door een expressie zoals body('formdataAction') te gebruiken. Deze methode werkt alleen als de hoofdtekst van de actie de enige parameter in het body invoerobject is. Als u de body('formdataAction') expressie gebruikt in een aanvraag waarin het inhoudstype zich bevindt application/json, krijgt u een runtimefout omdat de hoofdtekst wordt gecodeerd.