Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Azure Logic Apps (Förbrukning + Standard)
Azure Logic Apps stöder alla innehållstyper som JSON, XML, flata filer och binära data. Vissa innehållstyper har inbyggt stöd, vilket innebär att de inte behöver gjutning eller konvertering, men andra innehållstyper behöver lite arbete för att ge dig det format som krävs.
För att avgöra det bästa sättet att hantera innehåll eller data i arbetsflöden använder Azure Logic Apps Content-Type huvudvärdet i de HTTP-begäranden som arbetsflöden får från externa uppringare.
Följande lista innehåller några exempelvärden Content-Type som ett arbetsflöde kan stöta på:
- application/json (intern typ)
- text/oformaterad (ursprunglig typ)
- application/xml och application/octet-stream
- Andra innehållstyper
Den här guiden beskriver hur Azure Logic Apps hanterar olika innehållstyper och visar hur du korrekt omvandlar eller konverterar dessa typer vid behov.
application/json
För en HTTP-begäran där Content-Type huvudvärdet är application/json lagrar och hanterar Azure Logic Apps innehållet som ett JSON-objekt (JavaScript Object Notation). Som standard kan du parsa JSON-innehåll utan någon gjutning eller konvertering. Du kan också parsa det här innehållet med hjälp av ett uttryck.
Till exempel använder det följande uttrycket funktionen body() med My_action, som är JSON-namnet för en föregående åtgärd i arbetsflödet.
body('My_action')['client']['animal-type'][0]
Följande steg beskriver hur uttrycket fungerar utan gjutning eller konvertering:
Funktionen
body()hämtarbodyutdataobjektet från åtgärdenMy_action.Från det returnerade
bodyobjektet kommer funktionen åt objektetclient.Objektet
clientinnehåller egenskapenanimal-typesom är inställd på en matris.Funktionen kommer åt det första objektet i arrayen och returnerar direkt värdet av hund utan typomvandling eller konvertering.
Om du arbetar med JSON-data som inte använder ett Content-Type huvud kan du manuellt konvertera dessa data till JSON med hjälp av funktionen json(), till exempel:
json(triggerBody())['client']['animal-type']
Funktionen
triggerBody()hämtarbodyobjektet från arbetsflödets utdata för utlösaren. Det här objektet är vanligtvis ett JSON-objekt.Källan för
bodyobjektet kommer från den inkommande HTTP-begäran eller händelsen som tas emot av arbetsflödesutlösaren.Funktionen
json()parsar uttryckligen objektetbodysom returneras fråntriggerBody()funktionen som ett JSON-objekt.Det här beteendet är användbart, till exempel när utlösartexten är en sträng som kräver hantering som JSON.
Det återstående uttrycksbeteendet liknar föregående exempel.
Skapa token för JSON-egenskaper
I Azure Logic Apps kan du generera användarvänliga token som representerar egenskaperna i JSON-innehåll. Du kan sedan använda dessa token så att du enklare kan referera till dessa egenskaper och deras värden i arbetsflödet.
I följande lista beskrivs vanliga arbetsflödesåtgärder och motsvarande sätt som du kan generera token för egenskaper i JSON-innehåll:
Begärandeutlösare med namnet När en HTTP-begäran tas emot
När du arbetar i designern med utlösaren Begäran kan du ange ett JSON-schema som definierar JSON-objekt, egenskaper och förväntade datatyper för varje egenskapsvärde. Om du inte har ett JSON-schema kan du ange en exempelnyttolast för att generera ett JSON-schema som du kan använda.
Utlösaren använder schemat för att parsa JSON-innehåll från inkommande HTTP-begäranden och generera token som representerar egenskaperna i JSON-innehållet. Du kan sedan enkelt referera till och använda dessa egenskaper och deras värden i efterföljande åtgärder i arbetsflödet.
Följande steg beskriver hur du kan ge ett exempel på nyttolast för att generera ett JSON-schema:
I designern väljer du utlösaren Begäran för att öppna informationsfönstret.
På fliken Parametrar går du till rutan JSON-schema för begärandetext och väljer Använd exempelnyttolast för att generera schema.
I rutan Ange eller klistra in en JSON-exempelnyttolast anger du en exempelnyttolast och väljer sedan Klar.
Det genererade schemat visas nu i utlösaren.
I kodvisningsredigeraren kan du granska den underliggande JSON-definitionen för utlösaren Förfrågning :
"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" } } } } } } } }Om du vill utlösa arbetsflödet hämtar du arbetsflödes-URL:en eller utlösarens HTTP-URL, som genereras när du har sparat arbetsflödet för första gången.
Om du vill testa arbetsflödet använder du ett klientverktyg eller en app där du kan skicka en HTTP-begäran till arbetsflödets URL eller utlösar-URL. Kontrollera att begäran innehåller ett huvud med namnet Content-Type och att rubrikvärdet är inställt på application/json.
Parsa JSON-åtgärd
När du använder den här åtgärden i designern kan du parsa JSON-utdata och generera användarvänliga token som representerar egenskaperna i ditt JSON-innehåll. Du kan sedan enkelt referera till och använda dessa egenskaper i hela logikappens arbetsflöde.
På samma sätt som med utlösaren Förfrågning kan du ange eller generera ett JSON-schema som beskriver det JSON-innehåll som du vill parsa. På så sätt kan du enklare använda data från Azure Service Bus, Azure Cosmos DB och så vidare.
text/plain
Om arbetsflödet tar emot HTTP-begäranden där Content-Type rubrikvärdet är text/oformaterad. Azure Logic Apps lagrar och hanterar innehållet i råform. Om du refererar till eller använder det här innehållet i efterföljande arbetsflödesåtgärder utan gjutning eller konvertering har Content-Type utgående begäranden även huvudvärdet inställt på text/plain.
Anta till exempel att du arbetar med en platt fil och att den inkommande HTTP-begäran har Content-Type huvudvärdet inställt på text/plain:
Date,Name,Address
Oct-1,Frank,123 Ave
Om du skickar den här begäran till en efterföljande åtgärd som använder begärandetexten för att skicka en annan begäran, har Content-Type den andra begäran även huvudvärdet inställt på text/plain. Om du arbetar med data i oformaterad text men inte angav ett huvud kan du manuellt omvandla dessa data till text med hjälp string() av funktionen, till exempel:
string(triggerBody())
application/xml och application/octet-stream
Azure Logic Apps bevarar alltid Content-Type header-värdet i en inkommande HTTP-begäran eller ett inkommande HTTP-svar. Om arbetsflödet tar emot innehåll med Content-Type inställt till application/octet-stream och du inkluderar innehållet i en efterföljande åtgärd utan konvertering, anges den utgående begäran också med Content-Type till application/octet-stream. Den här metoden ser till att data inte går förlorade när de flyttas genom arbetsflödet. I tillståndskänsliga arbetsflöden lagras den efterföljande åtgärdens tillstånd, indata och utdata i ett JSON-objekt medan tillståndet flyttas genom arbetsflödet.
Konverterarfunktioner
För att bevara vissa datatyper konverterar Azure Logic Apps innehåll till en binär base64-kodad sträng. Den här strängen har lämpliga metadata som bevarar både $content nyttolasten och $content-type, som konverteras automatiskt.
I följande lista beskrivs hur Azure Logic Apps konverterar innehåll när du använder specifika funktioner:
-
json(): Omvandlar data tillapplication/json. -
xml(): Omvandlar data tillapplication/xml. -
binary(): Omvandlar data tillapplication/octet-stream. -
string(): Omvandlar data tilltext/plain. -
base64(): Konverterar innehåll till en base64-kodad sträng. -
base64toString(): Konverterar en base64-kodad sträng tilltext/plain. -
base64toBinary(): Konverterar en base64-kodad sträng tillapplication/octet-stream. -
dataUri(): Konverterar en sträng till en data-URI. -
dataUriToBinary(): Konverterar en data-URI till en binär sträng. -
dataUriToString(): Konverterar en data-URI till en sträng.
Anta till exempel att arbetsflödesutlösaren tar emot en HTTP-begäran där Content-Type är satt till application/xml och där innehållet ser ut som följande exempel:
<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>
Du kan casta det här innehållet med hjälp av följande uttryck, som använder funktionerna xml() och triggerBody():
xml(triggerBody())
Du kan sedan använda det resulterande innehållet med efterföljande åtgärder i arbetsflödet. Eller så kan du använda följande uttryck som använder xpath() funktionerna och xml() i stället:
xpath(xml(triggerBody()), '/CustomerName')
Andra innehållstyper
Azure Logic Apps stöder andra innehållstyper men kan kräva att du manuellt hämtar meddelandetexten från en HTTP-begäran genom att avkoda variabeln $content .
Anta till exempel att arbetsflödet tar emot en HTTP-begäran där Content-Type är inställt på application/x-www-url-formencoded. För att bevara alla data innehåller begärandetexten $content variabeln där nyttolasten kodas som en base64-sträng:
CustomerName=Frank&Address=123+Avenue
Den här innehållstypen är inte i oformaterad text eller JSON-format, så Azure Logic Apps lagrar CustomerName=Frank&Address=123+Avenue med hjälp av följande $content-type variabler och $content variabler:
"body": {
"$content-type": "application/x-www-url-formencoded",
"$content": "AAB1241BACDFA=="
}
Azure Logic Apps innehåller även inbyggda funktioner för att hantera formulärdata, till exempel:
Eller så kan du manuellt komma åt data med hjälp av ett uttryck, till exempel följande exempel:
string(body('formdataAction'))
För att göra en utgående begäran, använd application/x-www-url-formencoded som Content-Type-rubrikvärde, lägg till begärandeinnehållet i åtgärdskroppen utan någon typkonvertering med hjälp av ett uttryck som body('formdataAction'). Den här metoden fungerar bara om åtgärdstexten är den enda parametern i body indataobjektet. Om du använder body('formdataAction') uttrycket i en begäran där innehållstypen är application/jsonfår du ett körningsfel eftersom brödtexten skickas kodad.