Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: Azure Logic Apps (Zużycie + Standardowa)
Usługa Azure Logic Apps obsługuje wszystkie typy zawartości, takie jak JSON, XML, pliki proste i dane binarne. Chociaż niektóre typy zawartości mają natywną obsługę, co oznacza, że nie wymagają rzutowania ani konwersji, inne typy zawartości wymagają pewnej pracy, aby zapewnić wymagany format.
Aby ułatwić określenie najlepszego sposobu obsługi zawartości lub danych w przepływach pracy, usługa Azure Logic Apps używa wartości nagłówka Content-Type w żądaniach HTTP, które przepływy pracy uzyskują od zewnętrznych wywołujących.
Poniższa lista zawiera kilka przykładowych Content-Type wartości, które mogą napotkać przepływ pracy:
- application/json (typ natywny)
- tekst/zwykły (typ natywny)
- application/xml i application/octet-stream
- Inne typy zawartości
W tym przewodniku opisano, jak usługa Azure Logic Apps obsługuje różne typy zawartości i pokazuje, jak poprawnie rzutować lub konwertować te typy w razie potrzeby.
application/json
W przypadku żądania HTTP, w którym wartość nagłówka Content-Type to application/json, usługa Azure Logic Apps przechowuje i obsługuje zawartość jako obiekt JavaScript Object Notation (JSON). Domyślnie można analizować zawartość JSON bez żadnego rzutu ani konwersji. Tę zawartość można również przeanalizować przy użyciu wyrażenia.
Na przykład następujące wyrażenie używa funkcji body() razem z My_action, która jest nazwą JSON dla akcji poprzednika w przepływie pracy.
body('My_action')['client']['animal-type'][0]
W poniższych krokach opisano sposób działania wyrażenia bez rzutu lub konwersji:
Funkcja
body()pobierabodyobiekt wyjściowy zMy_actionakcji.Funkcja uzyskuje dostęp do obiektu
bodyz zwróconego obiektuclient.Obiekt
clientzawiera właściwośćanimal-type, która jest przypisana do tablicy.Funkcja uzyskuje dostęp do pierwszego elementu w tablicy i bezpośrednio zwraca wartość "dog" bez rzutowania lub konwersji.
Jeśli pracujesz z danymi JSON, które nie używają nagłówka Content-Type , możesz ręcznie przekonwertować te dane na format JSON przy użyciu funkcji json(), na przykład:
json(triggerBody())['client']['animal-type']
Obiekt
triggerBody()z wyjścia wyzwalacza przepływu pracy jest pobierany przez funkcjębody. Ten obiekt jest zazwyczaj obiektem JSON.Źródło
bodyobiektu pochodzi z przychodzącego żądania HTTP lub zdarzenia odebranego przez wyzwalacz przepływu pracy.Funkcja
json()jawnie analizujebodyobiekt zwrócony ztriggerBody()funkcji jako obiekt JSON.To zachowanie jest przydatne, na przykład gdy treść wyzwalacza jest ciągiem, który wymaga obsługi w formacie JSON.
Pozostałe zachowanie wyrażenia jest podobne do poprzedniego przykładu.
Tworzenie tokenów dla właściwości JSON
W usłudze Azure Logic Apps można wygenerować przyjazne dla użytkownika tokeny reprezentujące właściwości w zawartości JSON. Następnie możesz użyć tych tokenów, aby łatwiej odwoływać się do tych właściwości i ich wartości w przepływie pracy.
Na poniższej liście opisano typowe operacje przepływu pracy oraz odpowiednie sposoby generowania tokenów dla właściwości w zawartości JSON:
Wyzwalacz zapytania o nazwie Kiedy zostanie odebrane żądanie HTTP
Podczas pracy w projektancie z wyzwalaczem Żądania można opcjonalnie podać schemat JSON definiujący obiekty, właściwości i oczekiwane typy danych dla każdej wartości właściwości. Jeśli nie masz schematu JSON, możesz podać przykładowy ładunek w celu wygenerowania schematu JSON, którego można użyć.
Wyzwalacz używa schematu do analizowania zawartości JSON z przychodzących żądań HTTP i generowania tokenów reprezentujących właściwości w zawartości JSON. Następnie można łatwo odwoływać się do tych właściwości i ich wartości w kolejnych akcjach w przepływie pracy.
W poniższych krokach opisano sposób podawania przykładowego ładunku w celu wygenerowania schematu JSON:
W projektancie wybierz wyzwalacz Żądanie, aby otworzyć panel informacyjny.
Na karcie Parametry w polu Schemat JSON treści żądania wybierz pozycję Użyj przykładowego ładunku do wygenerowania schematu.
W polu Wprowadź lub wklej przykładowy ładunek JSON wprowadź przykładowy ładunek , a następnie wybierz pozycję Gotowe.
Wygenerowany schemat jest teraz wyświetlany w wyzwalaczu.
W edytorze widoku kodu możesz przejrzeć podstawową definicję JSON wyzwalacza żądania :
"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" } } } } } } } }Aby uruchomić przepływ pracy, uzyskaj URL przepływu pracy lub HTTP URL wyzwalacza, które są generowane po pierwszym zapisaniu przepływu pracy.
Aby przetestować przepływ pracy, użyj narzędzia klienta lub aplikacji, z której można wysłać żądanie HTTP do adresu URL przepływu pracy lub adresu URL wyzwalacza. Upewnij się, że żądanie zawiera nagłówek o nazwie Content-Type oraz wartość nagłówka jest ustawiona na application/json.
Analizowanie akcji JSON
Jeśli używasz tej akcji w projektancie, możesz przeanalizować dane wyjściowe JSON i wygenerować przyjazne dla użytkownika tokeny reprezentujące właściwości zawartości JSON. Następnie można łatwo odwoływać się do tych właściwości i używać ich w przepływie pracy aplikacji logiki.
Podobnie jak w przypadku wyzwalacza żądania, można podać lub wygenerować schemat JSON opisujący zawartość JSON, którą chcesz przeanalizować. Dzięki temu można łatwiej korzystać z danych z usług Azure Service Bus, Azure Cosmos DB itd.
text/plain
Jeśli przepływ pracy odbiera żądania HTTP, w których wartość nagłówka Content-Type to text/plain. Usługa Azure Logic Apps przechowuje i obsługuje zawartość w postaci nieprzetworzonej. Jeśli odwołujesz się do tej zawartości lub używasz jej w dalszych działaniach przepływu pracy bez rzutowania lub konwersji, żądania wychodzące również mają wartość nagłówka ustawioną na Content-Type.
Załóżmy na przykład, że pracujesz z plikiem płaskim, a przychodzące żądanie HTTP ma wartość nagłówka ustawioną Content-Type na :text/plain
Date,Name,Address
Oct-1,Frank,123 Ave
Jeśli wyślesz to żądanie do kolejnej akcji, która używa treści żądania do wysłania innego żądania, drugie żądanie ma również wartość nagłówka ustawioną Content-Type na text/plain. Jeśli pracujesz z danymi w postaci zwykłego tekstu, ale nie określono nagłówka, możesz ręcznie rzutować te dane na tekst przy użyciu string() funkcji, na przykład:
string(triggerBody())
application/xml i application/octet-stream
Usługa Azure Logic Apps zawsze zachowuje wartość nagłówka Content-Type w przychodzącym żądaniu HTTP lub odpowiedzi. Jeśli przepływ pracy odbiera zawartość z ustawioną wartością Content-Typeapplication/octet-stream i dołączasz tę zawartość do kolejnej akcji bez rzutowania, żądanie wychodzące również ustawia Content-Type na application/octet-stream. Takie podejście zapewnia, że dane nie zostaną utracone podczas przechodzenia przez przepływ pracy. W stanowych przepływach pracy stan kolejnej akcji, dane wejściowe i wyjściowe są przechowywane w obiekcie JSON, podczas gdy stan przechodzi przez przepływ pracy.
Funkcje konwertera
Aby zachować niektóre typy danych, usługa Azure Logic Apps konwertuje zawartość na binarny ciąg zakodowany w formacie base64. Ten ciąg zawiera odpowiednie metadane, które zachowują zarówno zawartość $content, jak i $content-type, i są automatycznie konwertowane.
Poniższa lista zawiera opis sposobu konwertowania zawartości przez usługę Azure Logic Apps podczas korzystania z określonych funkcji:
-
json(): rzutuje dane naapplication/json. -
xml(): rzutuje dane naapplication/xml. -
binary(): rzutuje dane naapplication/octet-stream. -
string(): rzutuje dane natext/plain. -
base64(): konwertuje zawartość na ciąg zakodowany w formacie base64. -
base64toString(): konwertuje ciąg zakodowany w formacie base64 natext/plain. -
base64toBinary(): konwertuje ciąg zakodowany w formacie base64 naapplication/octet-stream. -
dataUri(): konwertuje ciąg na identyfikator URI typu data. -
dataUriToBinary(): konwertuje URI danych na ciąg znaków binarnych. -
dataUriToString(): Konwertuje URI danych na ciąg znaków.
Załóżmy na przykład, że wyzwalacz przepływu pracy odbiera żądanie HTTP, w którym Content-Type ustawiono application/xml, a zawartość wygląda jak w poniższym przykładzie:
<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>
Tę zawartość można rzutować przy użyciu następującego wyrażenia, które używa funkcji xml() i funkcji triggerBody().
xml(triggerBody())
Następnie możesz użyć wynikowej zawartości w kolejnych krokach w przebiegu pracy. Możesz też użyć następującego wyrażenia, które używa funkcji xpath() i xml().
xpath(xml(triggerBody()), '/CustomerName')
Inne typy zawartości
Usługa Azure Logic Apps obsługuje inne typy zawartości, ale może wymagać ręcznego pobrania treści komunikatu z żądania HTTP przez dekodowanie zmiennej $content .
Załóżmy na przykład, że przepływ pracy odbiera żądanie HTTP, w którym wartość Content-Type jest ustawiona na application/x-www-url-formencoded. Aby zachować wszystkie dane, treść żądania zawiera $content zmienną, w której ładunek jest zakodowany jako ciąg base64:
CustomerName=Frank&Address=123+Avenue
Ten typ zawartości nie jest w formacie zwykłego tekstu ani w formacie JSON, dlatego Azure Logic Apps przechowuje te dane przy użyciu następujących zmiennych: CustomerName=Frank&Address=123+Avenue, $content-type oraz $content.
"body": {
"$content-type": "application/x-www-url-formencoded",
"$content": "AAB1241BACDFA=="
}
Usługa Azure Logic Apps obejmuje również funkcje natywne do obsługi danych formularzy, na przykład:
Możesz też ręcznie uzyskać dostęp do danych przy użyciu wyrażenia, takiego jak poniższy przykład:
string(body('formdataAction'))
Aby złożyć żądanie wychodzące, użyj application/x-www-url-formencoded jako wartości nagłówka Content-Type, dodaj zawartość żądania do treści akcji bez rzutowania, korzystając z wyrażenia takiego jak body('formdataAction'). Ta metoda działa tylko wtedy, gdy treść akcji jest jedynym parametrem body w obiekcie inputs. Jeśli używasz body('formdataAction') wyrażenia w żądaniu, w którym typ zawartości to application/json, zostanie wyświetlony błąd środowiska uruchomieniowego, ponieważ treść jest wysyłana zakodowana.