Tartalomtípusok kezelése az Azure Logic Appsben

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

Az Azure Logic Apps támogatja az összes tartalomtípust, például a JSON-t, az XML-t, az egybesimított fájlokat és a bináris adatokat. Míg egyes tartalomtípusok natív támogatással rendelkeznek, ami azt jelenti, hogy nincs szükségük öntésre vagy átalakításra, más tartalomtípusoknak némi munkára van szükségük a szükséges formátum megadásához.

Az Azure Logic Apps a munkafolyamatokban lévő tartalom vagy adatok kezelésének legjobb módjának meghatározásához a Content-Type külső hívóktól kapott HTTP-kérelmek fejlécértékét használja.

Az alábbi lista néhány példaértéket Content-Type tartalmaz, amelyekkel egy munkafolyamat találkozhat:

Ez az útmutató bemutatja, hogyan kezeli az Azure Logic Apps a különböző tartalomtípusokat, és bemutatja, hogyan lehet helyesen leadni vagy átalakítani ezeket a típusokat, ha szükséges.

application/json

Olyan HTTP-kérés esetén, amelyben a Content-Type fejléc értéke application/json, az Azure Logic Apps JavaScript Object Notation (JSON) objektumként tárolja és kezeli a tartalmat. Alapértelmezés szerint a JSON-tartalmat öntés vagy átalakítás nélkül elemezheti. Ezt a tartalmat kifejezéssel is elemezheti.

Az alábbi kifejezés például a body() függvényt My_actionhasználja, amely a munkafolyamat egy elődműveletének JSON-neve:

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

Az alábbi lépések azt írják le, hogyan működik a kifejezés öntés vagy átalakítás nélkül:

  1. A body() függvény lekéri a body kimeneti objektumot a My_action műveletből.

  2. A visszaadott body objektumból a függvény hozzáfér az client objektumhoz.

    Az client objektum tartalmazza a animal-type tömbre beállított tulajdonságot.

  3. A függvény hozzáfér a tömb első eleméhez, és közvetlenül visszaadja a kutya értékét öntés vagy átalakítás nélkül.

Ha olyan JSON-adatokkal dolgozik, amelyek nem használnak fejlécet Content-Type , manuálisan JSON-ra konvertálhatja az adatokat a json() függvény használatával, például:

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

  1. A triggerBody() függvény lekéri az body objektumot a munkafolyamat eseményindítójának kimenetéből. Ez az objektum általában egy JSON-objektum.

    Az objektum forrása a body munkafolyamat-eseményindító által fogadott bejövő HTTP-kérésből vagy eseményből származik.

  2. A json() függvény kifejezetten JSON-objektumként elemzi a bodytriggerBody() függvényből visszaadott objektumot.

    Ez a viselkedés például akkor hasznos, ha az eseményindító törzse egy olyan sztring, amely JSON-ként való kezelést igényel.

A fennmaradó kifejezés viselkedése hasonló az előző példához.

JSON-tulajdonságok jogkivonatainak létrehozása

Az Azure Logic Appsben felhasználóbarát jogkivonatokat hozhat létre, amelyek a JSON-tartalom tulajdonságait képviselik. Ezután használhatja ezeket a tokeneket, hogy könnyebben hivatkozhasson ezekre a tulajdonságokra és azok értékeire a munkafolyamatban.

Az alábbi lista a gyakori munkafolyamat-műveleteket és a JSON-tartalom tulajdonságaihoz létrehozható tokenek megfelelő módjait ismerteti:

  • Kérés eseményindító, amelyet HTTP-kérés fogadásakor neveznek meg

    Ha a tervezőben dolgozik a Kérelem eseményindítóval, megadhat egy JSON-sémát, amely meghatározza az egyes tulajdonságértékek JSON-objektumait, tulajdonságait és várható adattípusait. Ha nem rendelkezik JSON-sémával, egy például szolgáló adatot biztosíthat, hogy létrehozzon egy JSON-sémát, amelyet használhat.

    Az eseményindító a sémával elemzi a bejövő HTTP-kérelmek JSON-tartalmát, és olyan jogkivonatokat hoz létre, amelyek a JSON-tartalom tulajdonságait képviselik. Ezután egyszerűen hivatkozhat ezekre a tulajdonságokra és azok értékeire a munkafolyamat későbbi műveleteiben.

    Az alábbi lépések bemutatják, hogyan adhat meg egy példa payloadot egy JSON séma generálásához:

    1. A tervezőben válassza a Kérelem eseményindítót az információs panel megnyitásához.

    2. A Paraméterek lapon, a Kérés törzsének JSON sémája mező alatt válassza a Minta adathalmaz séma létrehozásához lehetőséget.

    3. A Minta JSON payload megadása vagy beillesztése mezőbe adjon meg egy minta payloadot, majd válassza a Kész lehetőséget.

      Képernyőkép a Http-kérelem fogadása és egy JSON-minta hasznos adatmintája nevű Kérelem eseményindítóról.

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

      Képernyőkép a minta JSON üzenetből létrehozott JSON sémáról.

      A kódnézet-szerkesztőben áttekintheti a Kérelem eseményindító alapjául szolgáló JSON-definíciót:

      "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. A munkafolyamat aktiválásához kérje le a munkafolyamat URL-címét vagy az eseményindító HTTP-URL-címét, amely a munkafolyamat első mentése után jön létre.

    5. A munkafolyamat teszteléséhez használjon egy ügyféleszközt vagy alkalmazást, ahonnan HTTP-kérést küldhet a munkafolyamat URL-címére vagy eseményindító URL-címére. Győződjön meg arról, hogy a kérelem tartalmaz egy Content-Type nevű fejlécet, és a fejléc értéke application/json.

  • JSON-művelet elemzése

    Ha ezt a műveletet használja a tervezőben, elemezheti a JSON-kimenetet, és felhasználóbarát jogkivonatokat hozhat 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.

    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.

    Képernyőkép egy JSON-elemzési műveletről a mintából létrehozott sémával.

text/plain

Ha a munkafolyamat HTTP-kéréseket kap, ahol a Content-Type fejléc értéke szöveg/egyszerű. Az Azure Logic Apps nyers formában tárolja és kezeli a tartalmat. Ha erre a tartalomra hivatkozik vagy ezt használja az azt követő munkafolyamat műveleteiben átalakítás nélkül, a kimenő kérések fejlécének értéke is Content-Type-re van állítva.

Tegyük fel például, hogy egy egyszerű fájllal dolgozik, és a bejövő HTTP-kérésben a Content-Type fejlécérték text/plain legyen beállítva.

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

Ha ezt a kérést egy későbbi műveletre küldi, amely a kérelem törzsét használja egy másik kérés elküldéséhez, a második kérés fejlécértéke is a következőre Content-Typevan text/plain állítva. Ha egyszerű szöveges adatokkal dolgozik, de nem adott meg fejlécet, manuálisan is átadhatja ezeket az adatokat a szövegbe a string() függvény használatával, például:

string(triggerBody())

application/xml és application/octet-stream

Az Azure Logic Apps mindig megőrzi a Content-Type fejléc értékét egy bejövő HTTP-kérésben vagy válaszban. Ha a munkafolyamat Content-Type beállított tartalmat fogad, és ezt a tartalmat egy későbbi műveletbe öntés nélkül is belefoglalja, a kimenő kérés is a következőre Content-Typevan állítvaapplication/octet-stream. Ez a megközelítés gondoskodik arról, hogy az adatok ne vesszenek el a munkafolyamatban való áthaladás során. Az állapotalapú munkafolyamatokban a következő művelet állapota, bemenetei és kimenetei egy JSON-objektumban vannak tárolva, miközben az állapot végighalad a munkafolyamaton.

Konverterfüggvények

Bizonyos adattípusok megőrzése érdekében az Azure Logic Apps bináris base64 kódolású sztringgé alakítja a tartalmat. Ez a sztring a megfelelő metaadatokkal rendelkezik, amelyek megőrzik a $content hasznos adatot és a $content-type, amelyek automatikusan konvertálódnak.

Az alábbi lista bemutatja, hogyan konvertálja az Azure Logic Apps a tartalmakat adott függvények használatakor:

  • json(): Adatokat konvertál a következő típusra application/json.
  • xml(): Adatokat konvertál a következő típusra application/xml.
  • binary(): Adatokat konvertál a következő típusra application/octet-stream.
  • string(): Adatokat konvertál a következő típusra text/plain.
  • base64(): A tartalmat alap64 kódolású sztringgé alakítja.
  • base64toString(): A base64-kódolású karakterláncot text/plain-ra konvertálja.
  • base64toBinary(): A base64-kódolású karakterláncot application/octet-stream-ra konvertálja.
  • dataUri(): Egy sztringet adat URI-vá alakít át.
  • dataUriToBinary(): Az adat URI-t bináris sztringgé alakítja át.
  • dataUriToString(): Adat-URI-t sztringgé alakít át.

Tegyük fel például, hogy a munkafolyamat-eseményindító http-kérést kap, ahol Content-Type a tartalom a következő mintához hasonlóan van beállítva application/xml :

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

A következő kifejezéssel átalakíthatja ezt a tartalmat, amely a xml() és triggerBody() függvényeket használja.

xml(triggerBody())

Ezután használhatja az eredményként kapott tartalmat a munkafolyamat későbbi műveleteivel. Vagy használhatja a xpath() és xml() függvényeket használó kifejezést helyette:

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

Egyéb tartalomtípusok

Az Azure Logic Apps más tartalomtípusokat is támogat, de előfordulhat, hogy manuálisan kell lekérni az üzenet törzsét egy HTTP-kérésből a $content változó dekódolásával.

Tegyük fel például, hogy a munkafolyamat egy HTTP-kérést kap, ahol Content-Typeapplication/x-www-url-formencoded-re van állítva. Az összes adat megőrzése érdekében a kérelem törzse tartalmazza azt a $content változót, amelyben a hasznos adat base64 sztringként van kódolva:

CustomerName=Frank&Address=123+Avenue

Ez a tartalomtípus nem egyszerű szöveges vagy JSON formátumú, ezért az Azure Logic Apps a CustomerName=Frank&Address=123+Avenue a következő $content-type és $content változók segítségével tárolja.

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

Az Azure Logic Apps natív függvényeket is tartalmaz az űrlapadatok kezeléséhez, például:

Vagy manuálisan is hozzáférhet az adatokhoz egy olyan kifejezéssel, mint a következő példa:

string(body('formdataAction'))

A kimenő kéréshez használja a application/x-www-url-formencoded fejlécértéket, és adja hozzá a kérés tartalmát a művelet törzséhez anélkül, hogy bármilyen típusátalakítást végezne, például az alábbi kifejezéssel: Content-Type. Ez a módszer csak akkor működik, ha a művelettörzs az egyetlen paraméter a body bemeneti objektumban. Ha a body('formdataAction') kifejezést olyan kérelemben használja, amelyben a tartalomtípus szerepel application/json, futásidejű hibát kap, mert a rendszer kódoltan küldi el a törzset.