Olvasás angol nyelven

Megosztás a következőn keresztül:


Tartalomtípusok kezelése az Azure Logic Appsben

A következőkre vonatkozik: Azure Logic Apps (Használat + Standard)

A különböző tartalomtípusok egy logikai alkalmazáson keresztül áramolhatnak, például JSON-, XML-, egybesimított fájlok és bináris adatok. Bár a Logic Apps minden tartalomtípust támogat, vannak, amelyek natív támogatással rendelkeznek, és nem igényelnek öntést vagy átalakítást a logikai alkalmazásokban. Más típusok szükség esetén szükség esetén öntést vagy átalakítást igényelhetnek. Ez a cikk azt ismerteti, hogyan kezeli a Logic Apps a tartalomtípusokat, és hogy szükség esetén hogyan lehet helyesen leadni vagy átalakítani ezeket a típusokat.

A tartalomtípusok kezelésének megfelelő módjának meghatározásához a Logic Apps a Content-Type HTTP-hívások fejlécértékére támaszkodik, például:

application/json

A Logic Apps JavaScript Object Notation (JSON) objektumként tárolja és kezeli az alkalmazás/json tartalomtípusú kéréseket. Alapértelmezés szerint a JSON-tartalmat öntés nélkül is elemezheti. Az "application/json" tartalomtípusú fejlécet tartalmazó kérések elemzéséhez használhat kifejezéseket. Ez a példa a tömb értékét doganimal-type adja vissza öntés nélkül:

@body('myAction')['client']['animal-type'][0]

JSON
{
  "client": {
     "name": "Fido",
     "animal-type": [ "dog", "cat", "rabbit", "snake" ]
  }
}

Ha olyan JSON-adatokkal dolgozik, amelyek nem adnak meg fejlécet, manuálisan is átadhatja az adatokat a JSON() függvény használatával, például:

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

JSON-tulajdonságok jogkivonatainak létrehozása

A Logic Apps lehetővé teszi, hogy felhasználóbarát jogkivonatokat hozzon létre, amelyek a JSON-tartalom tulajdonságait képviselik, így könnyebben hivatkozhat és használhatja ezeket a tulajdonságokat a logikai alkalmazás munkafolyamatában.

  • Kérelem eseményindítója

    Ha ezt az eseményindítót használja a Logic App Designerben, megadhat egy JSON-sémát, amely leírja a várt hasznos adatokat. A tervező ezzel a sémával elemzi a JSON-tartalmat, és felhasználóbarát jogkivonatokat hoz létre, amelyek a JSON-tartalom tulajdonságait képviselik. Ezután egyszerűen hivatkozhat és használhatja ezeket a tulajdonságokat a logikai alkalmazás munkafolyamatában.

    Ha nem rendelkezik sémával, létrehozhatja a sémát.

    1. A Kérelem eseményindítóban válassza a Minta hasznos adat használata séma létrehozásához lehetőséget.

    2. Az Enter vagy a illessze be a JSON-minta hasznos adatait, adjon meg egy hasznos adatmintát, majd válassza a Kész lehetőséget. Példa:

      Képernyőkép a

      A létrehozott séma most megjelenik az eseményindítóban.

      JSON-minta hasznos adatainak megadása

      A Kódnézet-szerkesztőben a Kérelem eseményindítójának mögöttes definíciója a következő:

      JSON
      "triggers": { 
         "manual": {
            "type": "Request",
            "kind": "Http",
            "inputs": { 
               "schema": {
                  "type": "object",
                  "properties": {
                     "client": {
                        "type": "object",
                        "properties": {
                           "animal-type": {
                              "type": "array",
                              "items": {
                                 "type": "string"
                              },
                           },
                           "name": {
                              "type": "string"
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      
    3. Az ügyfélalkalmazás által az Azure Logic Appsnek küldött HTTP-kérelemben győződjön meg arról, hogy tartalmaz egy Content-Type nevű fejlécet, és állítsa be a fejléc értékét application/json értékre.

  • JSON-művelet elemzése

    Ha ezt a műveletet a Logic App Designerben használja, elemezheti a JSON-kimenetet, és létrehozhat felhasználóbarát jogkivonatokat, amelyek a JSON-tartalom tulajdonságait képviselik. Ezután egyszerűen hivatkozhat és használhatja ezeket a tulajdonságokat a logikai alkalmazás munkafolyamatában. A Kérelem eseményindítóhoz hasonlóan olyan JSON-sémát is megadhat vagy hozhat létre, amely leírja az elemezni kívánt JSON-tartalmat. Így egyszerűbben használhat fel adatokat az Azure Service Busból, az Azure Cosmos DB-ből stb.

    JSON elemzése

text/plain

Amikor a logikai alkalmazás olyan HTTP-üzeneteket fogad, amelyek fejléce be van Content-Type állítva text/plain, a logikai alkalmazás nyers formában tárolja ezeket az üzeneteket. Ha ezeket az üzeneteket a későbbi műveletekbe öntés nélkül is belefoglalja, a kérések a fejlécben a Content-Type következőre text/plainvannak állítva: .

Ha például egy sima fájllal dolgozik, előfordulhat, hogy a Content-Type fejléc tartalomtípusra text/plain van állítva:

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

Ha ezt a kérést egy későbbi műveletben küldi el egy másik kérés törzseként, például a @body('flatfile')második kéréshez egy fejléc is Content-Type be van állítva text/plain. Ha egyszerű szöveges adatokkal dolgozik, de nem adott meg fejlécet, manuálisan is átadhatja az adatokat a szövegbe a sztring() függvénnyel , például a következő kifejezéssel:

@string(triggerBody())

application/xml and application/octet-stream

A Logic Apps mindig megőrzi a Content-Type kapott HTTP-kérést vagy -választ. Ha tehát a logikai alkalmazás olyan tartalmat fogad, amelynek Content-Type a beállítása be van állítva application/octet-stream, és ezt a tartalmat egy későbbi műveletbe is belefoglalja, akkor a kimenő kérés is be van Content-Type állítva application/octet-stream. Így a Logic Apps garantálhatja, hogy az adatok ne vesszenek el a munkafolyamatban való áthaladás során. A műveletállapot, illetve a bemenetek és kimenetek azonban egy JSON-objektumban vannak tárolva, miközben az állapot végighalad a munkafolyamaton.

Konverterfüggvények

Egyes adattípusok megőrzése érdekében a Logic Apps bináris base64-kódolású sztringgé alakítja a tartalmat megfelelő metaadatokkal, amelyek megőrzik a $content hasznos adatokat és az $content-typeautomatikusan konvertált adatokat.

Ez a lista azt ismerteti, hogyan konvertálja a Logic Apps a tartalmakat az alábbi függvények használatakor:

  • json(): Adatokat ad át a következőre: application/json
  • xml(): Adatokat ad át a következőre: application/xml
  • binary(): Adatokat ad át a következőre: application/octet-stream
  • string(): Adatokat ad át a következőre: text/plain
  • base64(): A tartalmat base64 kódolású sztringgé alakítja
  • base64toString(): Alap64 kódolású sztring konvertálása text/plain
  • base64toBinary(): Alap64 kódolású sztring konvertálása application/octet-stream
  • dataUri(): Sztring átalakítása adat URI-vá
  • dataUriToBinary(): Adat URI-t bináris sztringgé alakít át
  • dataUriToString(): Adat-URI-t sztringgé alakít át

Ha például egy HTTP-kérést kap, amelynek Content-Type a beállítása a következőre van állítva application/xml, például a következő tartalomra:

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

Ezt a tartalmat a kifejezés és triggerBody() a @xml(triggerBody())xml() függvények használatával vetheti el, majd később használhatja ezt a tartalmat. Vagy használhatja a @xpath(xml(triggerBody()), '/CustomerName') kifejezést a és xml() a xpath() függvényekkel.

Egyéb tartalomtípusok

A Logic Apps más tartalomtípusokkal is együttműködik, de előfordulhat, hogy manuálisan kell lekérni az üzenet törzsét a $content változó dekódolásával.

Tegyük fel például, hogy a logikai alkalmazást egy tartalomtípusú application/x-www-url-formencoded kérés aktiválja. Az összes adat megőrzése érdekében a $content kérelem törzsében lévő változó hasznos adatokkal rendelkezik, amelyek base64 sztringként vannak kódolva:

CustomerName=Frank&Address=123+Avenue

Mivel a kérés nem egyszerű szöveg vagy JSON, a kérés a műveletben az alábbiak szerint lesz tárolva:

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

A Logic Apps natív függvényeket biztosít az űrlapadatok kezeléséhez, például:

Vagy manuálisan is hozzáférhet az adatokhoz az alábbi példához hasonló kifejezéssel:

@string(body('formdataAction'))

Ha azt szeretné, hogy a kimenő kérés ugyanazzal application/x-www-url-formencoded a tartalomtípus-fejléccel rendelkezzen, a kérést a művelet törzsébe öntés nélkül is hozzáadhatja egy olyan kifejezéssel, mint a @body('formdataAction'). Ez a módszer azonban csak akkor működik, ha a szövegtörzs az egyetlen paraméter a body bemenetben. Ha egy kérésben application/json megpróbálja használni a @body('formdataAction') kifejezést, futásidejű hibaüzenet jelenik meg, mert a rendszer kódolva küldi el a törzset.