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 áthaladhatnak egy logikai alkalmazásban, például JSON, XML, egybesimított fájlok és bináris adatok. Bár a Logic Apps minden tartalomtípust támogat, néhány natív támogatással rendelkezik, és nem igényel castingot vagy átalakítást a logikai alkalmazásokban. Más típusok szükség esetén castingot vagy átalakítást igényelhetnek. Ez a cikk azt ismerteti, hogyan kezeli a Logic Apps a tartalomtípusokat, és hogyan alakíthatja át megfelelően ezeket a típusokat, ha szükséges.

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 notation (JSON) objektumként tárolja és kezeli az alkalmazás-/json-tartalomtípussal kapcsolatos kéréseket. Alapértelmezés szerint a JSON-tartalmat casting nélkül is elemezheti. Az "application/json" tartalomtípusú fejlécet tartalmazó kérések elemzéséhez használhat egy kifejezést. Ez a példa a tömb értékét doganimal-type adja vissza casting nélkül:

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

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

Ha olyan JSON-adatokkal dolgozik, amelyek nem határoznak meg fejlécet, manuálisan is átadhatja az adatokat a JSON-ba a json() függvénnyel, például:

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

Jogkivonatok létrehozása JSON-tulajdonságokhoz

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 Logikai alkalmazás Tervező, 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 or paste a sample JSON payload (JSON-minta hasznos adat beírása vagy beillesztése) területen adjon meg egy hasznos adatmintát, majd válassza a Done (Kész) lehetőséget. Például:

      Képernyőkép a

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

      JSON-minta hasznos adatainak megadása

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

      "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 a fejléc értékét application/json értékre.

  • JSON-művelet elemzése

    Ha ezt a műveletet a Logikai alkalmazás Tervező használja, 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 megadhat vagy létrehozhat egy JSON-sémát, amely leírja az elemezni kívánt JSON-tartalmat. Így egyszerűbben használhatja fel a Azure Service Bus, az Azure Cosmos DB stb. adatait.

    JSON elemzése

szöveg/egyszerű

Ha a logikai alkalmazás olyan HTTP-üzeneteket kap, amelyek Content-Type fejléce értékre text/plainvan állítva, a logikai alkalmazás nyers formában tárolja ezeket az üzeneteket. Ha ezeket az üzeneteket további műveletekbe is belefoglalja, és nem adja meg azokat, a kérések a fejlécben a Content-Type következőre text/plainvannak állítva: .

Ha például egy egybesimított fájllal dolgozik, előfordulhat, hogy egy HTTP-kérést kap, amelynek fejléce Content-Type tartalomtípusra text/plain van beállítva:

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

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

@string(triggerBody())

application/xml és application/octet-stream

A Logic Apps mindig megőrzi a Content-Type kapott HTTP-kérésben vagy -válaszban. Ha tehát a logikai alkalmazás a () értékre Content-Type állított application/octet-streamtartalmat fogadja, és ezt a tartalmat egy későbbi műveletben, casting nélkül is belefoglalja, a kimenő kérés is értékre application/octet-streamvan Content-Type állítva. Így a Logic Apps garantálhatja, hogy az adatok ne vesszenek el a munkafolyamatok között. A műveletállapot, vagyis a bemenetek és kimenetek azonban egy JSON-objektumban vannak tárolva, miközben az állapot a munkafolyamaton halad át.

Konverterfüggvények

Bizonyos 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 a fájlt is, amelyeket a $content-typerendszer automatikusan konvertál.

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

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

Ha például http-kérést kap, ahol Content-Type a application/xmlértéke , például ez a tartalom:

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

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

Egyéb tartalomtípusok

A Logic Apps más tartalomtípusokkal is együttműködik, és támogatja azt, de előfordulhat, hogy manuálisan kell lekérni az üzenettörzset 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 adattal rendelkezik, amely base64 sztringként van 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:

"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ésnek ugyanaz application/x-www-url-formencoded a tartalomtípus-fejléce legyen, a kérést a művelet törzséhez adhatja hozzá, anélkül, hogy a parancsot egy olyan kifejezéssel adja hozzá, mint a @body('formdataAction'). Ez a módszer azonban csak akkor működik, ha a törzs az egyetlen paraméter a body bemenetben. Ha egy kérésben application/json a kifejezést próbálja használni@body('formdataAction'), futásidejű hibát kap, mert a rendszer kódolva küldi el a törzset.