Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: Azure Logic Apps (Consumption + Standard)
Azure Logic Apps podporuje všechny typy obsahu, jako jsou JSON, XML, ploché soubory a binární data. I když některé typy obsahu mají nativní podporu, což znamená, že nepotřebují přetypování nebo převod, jiné typy obsahu vyžadují určitou práci, aby vám poskytly požadovaný formát.
Aby bylo možné určit nejlepší způsob zpracování obsahu nebo dat v pracovních postupech, azure Logic Apps používá Content-Type hodnotu hlavičky v požadavcích HTTP, které pracovní postupy získávají od externích volajících.
Následující seznam obsahuje některé ukázkové Content-Type hodnoty, se kterými může pracovní postup narazit:
- application/json (nativní typ)
- text/plain (nativní typ)
- application/xml a application/octet-stream
- Další typy obsahu
Tato příručka popisuje, jak Azure Logic Apps zpracovává různé typy obsahu a ukazuje, jak tyto typy správně přetypovat nebo převést v případě potřeby.
application/json
Pro požadavek HTTP, kde je hodnota hlavičky Content-Typeapplication/json, azure Logic Apps ukládá a zpracovává obsah jako objekt JSON (JavaScript Object Notation). Ve výchozím nastavení můžete analyzovat obsah JSON bez jakéhokoli přetypování nebo převodu. Tento obsah můžete také analyzovat pomocí výrazu.
Například následující výraz používá funkci body() s My_action, což je JSON název pro akci předchůdce v pracovním postupu.
body('My_action')['client']['animal-type'][0]
Následující kroky popisují, jak výraz funguje bez přetypování nebo konverze:
Funkce
body()vybere výstupní objektbodyz akceMy_action.Z vráceného
bodyobjektu funkce přistupuje k objektuclient.Objekt
clientobsahujeanimal-typevlastnost, která je nastavena na pole.Funkce přistupuje k první položce v poli a přímo vrátí hodnotu „dog“ bez přetypování nebo převodu.
Pokud pracujete s daty JSON, která nepoužívají Content-Type záhlaví, můžete tato data ručně převést na JSON pomocí funkce json(), například:
json(triggerBody())['client']['animal-type']
Funkce
triggerBody()získá objektbodyz výstupu spouštěče pracovního postupu. Tento objekt je obvykle objekt JSON.Zdroj objektu
bodypochází z příchozího požadavku HTTP nebo události přijaté triggerem pracovního postupu.Funkce
json()explicitně parsujebodyobjekt vrácený ztriggerBody()funkce jako objekt JSON.Toto chování je užitečné například v případě, že tělo triggeru je řetězec, který vyžaduje zpracování ve formátu JSON.
Zbývající chování výrazu je podobné předchozímu příkladu.
Vytváření tokenů pro vlastnosti JSON
V Azure Logic Apps můžete generovat uživatelsky přívětivé tokeny, které představují vlastnosti v obsahu JSON. Tyto tokeny pak můžete použít, abyste mohli snadněji odkazovat na tyto vlastnosti a jejich hodnoty ve vašem pracovním postupu.
Následující seznam popisuje běžné operace pracovního postupu a odpovídající způsoby generování tokenů pro vlastnosti v obsahu JSON:
Spouštěč požadavku s názvem Po přijetí požadavku HTTP
Při práci v návrháři s triggerem požadavku můžete volitelně zadat schéma JSON, které definuje objekty JSON, vlastnosti a očekávané datové typy pro každou hodnotu vlastnosti. Pokud schéma JSON nemáte, můžete zadat ukázkovou datovou část pro vygenerování schématu JSON, které můžete použít.
Trigger pomocí schématu parsuje obsah JSON z příchozích požadavků HTTP a generuje tokeny, které představují vlastnosti v obsahu JSON. Tyto vlastnosti a jejich hodnoty pak můžete snadno odkazovat a používat v následných akcích pracovního postupu.
Následující kroky popisují, jak můžete poskytnout ukázkovou datovou část pro vygenerování schématu JSON:
V návrháři vyberte spouštěč Požadavek a otevřete informační panel.
Na kartě Parametry v poli JSON schéma těla požadavku vyberte Použít ukázkový payload k vygenerování schématu.
Do pole Zadejte nebo vložte ukázkovou datovou část JSON , zadejte ukázkovou datovou část a pak vyberte Hotovo.
Vygenerované schéma se teď zobrazí ve vaší aktivační události.
V editoru zobrazení kódu můžete zkontrolovat základní definici JSON pro trigger požadavku :
"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" } } } } } } } }Pokud chcete spustit pracovní postup, získejte adresu URL pracovního postupu nebo adresu URL HTTP triggeru, která se vygeneruje po prvním uložení pracovního postupu.
K otestování pracovního postupu použijte klientský nástroj nebo aplikaci, ze které můžete odeslat požadavek HTTP na adresu URL pracovního postupu nebo adresu URL aktivační události. Ujistěte se, že požadavek obsahuje hlavičku s názvem Content-Type a hodnota hlavičky je nastavená na application/json.
Parsovat akci JSON
Při použití této akce v návrháři můžete analyzovat výstup JSON a generovat uživatelsky přívětivé tokeny, které představují vlastnosti v obsahu JSON. Tyto vlastnosti pak můžete snadno odkazovat a používat v rámci pracovního postupu aplikace logiky.
Podobně jako trigger požadavku můžete zadat nebo vygenerovat schéma JSON, které popisuje obsah JSON, který chcete analyzovat. Díky tomu můžete snadněji využívat data ze služby Azure Service Bus, Azure Cosmos DB atd.
text/plain
Pokud váš pracovní postup obdrží požadavky HTTP, kde Content-Type je hodnota hlavičky text/plain. Azure Logic Apps ukládá a zpracovává obsah v nezpracované podobě. Pokud odkazujete na tento obsah nebo ho používáte v následných akcích pracovního postupu bez přetypování nebo převodu, mají odchozí požadavky také nastavenou hodnotu hlavičky Content-Typetext/plain.
Předpokládejme například, že pracujete s plochým souborem a příchozí požadavek HTTP má hodnotu hlavičky nastavenou Content-Type na text/plain:
Date,Name,Address
Oct-1,Frank,123 Ave
Pokud odešlete tento požadavek na následnou akci, která k odeslání jiného požadavku používá text požadavku, druhý požadavek má také nastavenou Content-Typehodnotu hlavičky text/plain . Pokud pracujete s daty ve formátu prostého textu, ale nezadali jste záhlaví, můžete tato data ručně přetypovat na text pomocí string() funkce, například:
string(triggerBody())
application/xml a application/octet-stream
Azure Logic Apps vždy zachovává hodnotu hlavičky Content-Type v příchozím požadavku nebo odpovědi HTTP. Pokud váš pracovní postup obdrží obsah s nastaveným Content-Type na application/octet-stream a tento obsah zahrnete do další akce bez přetypování, také odchozí požadavek nastaví Content-Type na application/octet-stream. Tento přístup zajišťuje, aby se při procházení pracovního postupu neztratila data. Ve stavových pracovních postupech se stav, vstupy a výstupy následných akcí ukládají do objektu JSON, zatímco stav prochází pracovním postupem.
Funkce převaděče
Aby se zachovaly některé datové typy, Azure Logic Apps převede obsah na binární řetězec s kódováním base64. Tento řetězec obsahuje příslušná metadata, která zachová datovou $content část i datovou $content-type část, které se automaticky převedou.
Následující seznam popisuje, jak Azure Logic Apps převádí obsah při použití konkrétních funkcí:
-
json(): Přetypuje data naapplication/json. -
xml(): Přetypuje data naapplication/xml. -
binary(): Přetypuje data naapplication/octet-stream. -
string(): Přetypuje data natext/plain. -
base64(): Převede obsah na řetězec s kódováním base64. -
base64toString(): Převede řetězec s kódováním base64 natext/plain. -
base64toBinary(): Převede řetězec s kódováním base64 naapplication/octet-stream. -
dataUri(): Převede řetězec na datový URI. -
dataUriToBinary(): Převede data URI na binární řetězec. -
dataUriToString(): Převede datový URI na řetězec.
Předpokládejme například, že spouštěč pracovního postupu obdrží požadavek HTTP, kde Content-Type je nastavený na application/xml a obsah vypadá jako v následující ukázce:
<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>
Tento obsah můžete přetypovat pomocí následujícího výrazu, který používá funkce xml() a triggerBody():
xml(triggerBody())
Výsledný obsah pak můžete použít s následnými akcemi v pracovním postupu. Nebo můžete místo toho použít následující výraz, který využívá funkce xpath() a xml():
xpath(xml(triggerBody()), '/CustomerName')
Další typy obsahu
Azure Logic Apps podporuje jiné typy obsahu, ale může vyžadovat ruční získání textu zprávy z požadavku HTTP dekódováním $content proměnné.
Předpokládejme například, že váš pracovní postup obdrží požadavek HTTP, kde Content-Type je nastavená hodnota application/x-www-url-formencoded. Aby se zachovala všechna data, text požadavku obsahuje $content proměnnou, ve které je datová část kódovaná jako řetězec base64:
CustomerName=Frank&Address=123+Avenue
Tento typ obsahu není ve formátu prostého textu nebo JSON, takže Azure Logic Apps používá následující proměnné CustomerName=Frank&Address=123+Avenue a $content-type k ukládání $content.
"body": {
"$content-type": "application/x-www-url-formencoded",
"$content": "AAB1241BACDFA=="
}
Azure Logic Apps také zahrnuje nativní funkce pro zpracování dat formulářů, například:
Nebo můžete k datům přistupovat ručně pomocí výrazu, jako je například následující příklad:
string(body('formdataAction'))
Pro vytvoření odchozího požadavku použijte application/x-www-url-formencoded jako hodnotu hlavičky Content-Type, přidejte obsah požadavku do těla akce bez jakékoli konverze datového typu pomocí výrazu, například body('formdataAction'). Tato metoda funguje pouze v případě, že tělo akce je jediným parametrem ve vstupním objektu body . Pokud výraz použijete body('formdataAction') v požadavku, kde je application/jsontyp obsahu , zobrazí se chyba modulu runtime, protože text je odeslán zakódovaný.