Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- application/json (natív típus)
- szöveg/egyszerű (natív típus)
- "application/xml" és "application/octet-stream"
- Egyéb tartalomtípusok
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:
A
body()függvény lekéri abodykimeneti objektumot aMy_actionműveletből.A visszaadott
bodyobjektumból a függvény hozzáfér azclientobjektumhoz.Az
clientobjektum tartalmazza aanimal-typetömbre beállított tulajdonságot.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']
A
triggerBody()függvény lekéri azbodyobjektumot a munkafolyamat eseményindítójának kimenetéből. Ez az objektum általában egy JSON-objektum.Az objektum forrása a
bodymunkafolyamat-eseményindító által fogadott bejövő HTTP-kérésből vagy eseményből származik.A
json()függvény kifejezetten JSON-objektumként elemzi abodytriggerBody()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:
A tervezőben válassza a Kérelem eseményindítót az információs panel megnyitásához.
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.
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.
A létrehozott séma most megjelenik az eseményindítóban.
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" } } } } } } } }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.
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.
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ípusraapplication/json. -
xml(): Adatokat konvertál a következő típusraapplication/xml. -
binary(): Adatokat konvertál a következő típusraapplication/octet-stream. -
string(): Adatokat konvertál a következő típusratext/plain. -
base64(): A tartalmat alap64 kódolású sztringgé alakítja. -
base64toString(): A base64-kódolású karakterláncottext/plain-ra konvertálja. -
base64toBinary(): A base64-kódolású karakterláncotapplication/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.