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 (natív típus)
- szöveg/egyszerű (natív típus)
- application/xml and application/octet-stream
- Egyéb tartalomtípusok
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 dog
animal-type
adja vissza öntés nélkül:
@body('myAction')['client']['animal-type'][0]
{
"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.
A Kérelem eseményindítóban válassza a Minta hasznos adat használata séma létrehozásához lehetőséget.
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:
A létrehozott séma most megjelenik az eseményindítóban.
A Kódnézet-szerkesztőben a Kérelem eseményindítójának 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" } } } } } } } }
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.
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/plain
vannak á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-type
automatikusan 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ásatext/plain
-
base64toBinary()
: Alap64 kódolású sztring konvertálásaapplication/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 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:
"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.