Tworzenie przepływów pracy, które można wywoływać, wyzwalać lub zagnieżdżać przy użyciu punktów końcowych HTTPS w usłudze Azure Logic Apps
Dotyczy: Azure Logic Apps (Zużycie + Standardowa)
Niektóre scenariusze mogą wymagać utworzenia przepływu pracy aplikacji logiki, który może odbierać żądania przychodzące z innych usług lub przepływów pracy albo przepływu pracy, który można wywołać przy użyciu adresu URL. W tym zadaniu można uwidocznić natywny synchroniczny punkt końcowy HTTPS w przepływie pracy, gdy używasz dowolnego z następujących typów wyzwalaczy opartych na żądaniach:
- Zażądaj
- Element webhook protokołu HTTP
- Wyzwalacze łącznika zarządzanego , które mają typ apiConnectionWebhook i mogą odbierać przychodzące żądania HTTPS
W tym przewodniku pokazano, jak utworzyć wywoływany punkt końcowy dla przepływu pracy przez dodanie wyzwalacza Żądania , a następnie wywołanie tego punktu końcowego z innego przepływu pracy. Wszystkie zasady mają identyczne zastosowanie do innych typów wyzwalaczy opartych na żądaniach, które mogą odbierać żądania przychodzące.
Wymagania wstępne
Konto i subskrypcja platformy Azure. Jeśli nie masz subskrypcji, zarejestruj się w celu założenia bezpłatnego konta platformy Azure.
Przepływ pracy aplikacji logiki, w którym chcesz użyć wyzwalacza Żądania w celu utworzenia punktu końcowego z możliwością wywołania. Możesz rozpocząć od pustego przepływu pracy lub istniejącego przepływu pracy, w którym można zastąpić bieżący wyzwalacz. Ten przykład rozpoczyna się od pustego przepływu pracy.
Zainstaluj lub użyj narzędzia, które może wysyłać żądania HTTP w celu przetestowania rozwiązania, na przykład:
- Program Visual Studio Code z rozszerzeniem z witryny Visual Studio Marketplace
- PowerShell Invoke-RestMethod
- Microsoft Edge — narzędzie konsoli sieciowej
- Bruno
- lok
Uwaga
W przypadku scenariuszy, w których masz poufne dane, takie jak poświadczenia, wpisy tajne, tokeny dostępu, klucze interfejsu API i inne podobne informacje, upewnij się, że używasz narzędzia chroniącego dane przy użyciu niezbędnych funkcji zabezpieczeń, działa w trybie offline lub lokalnie, nie synchronizuje danych z chmurą i nie wymaga zalogowania się do konta online. Dzięki temu można zmniejszyć ryzyko ujawnienia poufnych danych publicznie.
Tworzenie wywoływanego punktu końcowego
W zależności od tego, czy masz przepływ pracy aplikacji logiki w warstwie Standardowa, czy Zużycie, wykonaj odpowiednie kroki:
W witrynie Azure Portal otwórz zasób standardowej aplikacji logiki i pusty przepływ pracy w projektancie.
Wykonaj następujące ogólne kroki, aby dodać wyzwalacz żądania o nazwie Po odebraniu żądania HTTP.
Opcjonalnie w polu Schemat JSON treści żądania możesz wprowadzić schemat JSON opisujący ładunek lub dane, które powinny zostać odebrane przez wyzwalacz.
Projektant używa tego schematu do generowania tokenów reprezentujących dane wyjściowe wyzwalacza. Następnie można łatwo odwoływać się do tych danych wyjściowych w przepływie pracy aplikacji logiki. Dowiedz się więcej o tokenach generowanych na podstawie schematów JSON.
W tym przykładzie wprowadź następujący schemat:
{ "type": "object", "properties": { "address": { "type": "object", "properties": { "streetNumber": { "type": "string" }, "streetName": { "type": "string" }, "town": { "type": "string" }, "postalCode": { "type": "string" } } } } }
Możesz też wygenerować schemat JSON, podając przykładowy ładunek:
W wyzwalaczu Żądanie wybierz pozycję Użyj przykładowego ładunku do wygenerowania schematu.
W polu Wprowadź lub wklej przykładowy ładunek JSON wprowadź przykładowy ładunek , na przykład:
{ "address": { "streetNumber": "00000", "streetName": "AnyStreet", "town": "AnyTown", "postalCode": "11111-1111" } }
Gdy wszystko będzie gotowe, wybierz pozycję Gotowe.
Pole Schemat JSON Treść żądania zawiera teraz wygenerowany schemat.
Zapisz przepływ pracy.
Pole Adres URL POST protokołu HTTP zawiera teraz wygenerowany adres URL wywołania zwrotnego, którego inne usługi mogą używać do wywoływania i wyzwalania przepływu pracy aplikacji logiki. Ten adres URL zawiera parametry zapytania, które określają klucz sygnatury dostępu współdzielonego (SAS), który jest używany do uwierzytelniania.
Aby skopiować adres URL wywołania zwrotnego, dostępne są następujące opcje:
Po prawej stronie pola Adres URL HTTP POST wybierz pozycję Kopiuj adres URL (ikona kopiowania plików).
Skopiuj adres URL wywołania zwrotnego ze strony Przegląd przepływu pracy.
Aby przetestować adres URL wywołania zwrotnego i wyzwolić przepływ pracy, wyślij żądanie HTTP do adresu URL, w tym metodę oczekiwaną przez wyzwalacz żądania przy użyciu narzędzia żądania HTTP i jego instrukcji.
W tym przykładzie użyto metody POST z skopiowanym adresem URL, który wygląda podobnie do następującego przykładu:
POST https://{logic-app-name}.azurewebsites.net:443/api/{workflow-name}/triggers/{trigger-name}/invoke?api-version=2022-05-01&sp=%2Ftriggers%2F{trigger-name}%2Frun&sv=1.0&sig={shared-access-signature}
Wybierz oczekiwaną metodę żądania
Domyślnie wyzwalacz Żądania oczekuje POST
żądania. Można jednak określić inną metodę, której obiekt wywołujący musi użyć, ale tylko jedną metodę.
W wyzwalaczu Żądanie otwórz listę Zaawansowane parametry i wybierz pozycję Metoda, która dodaje tę właściwość do wyzwalacza.
Z listy Metoda wybierz metodę, którą powinien oczekiwać wyzwalacz. Możesz też określić metodę niestandardową.
Na przykład wybierz metodę GET , aby później przetestować adres URL punktu końcowego.
Przekazywanie parametrów za pośrednictwem adresu URL punktu końcowego
Jeśli chcesz zaakceptować wartości parametrów za pośrednictwem adresu URL punktu końcowego, dostępne są następujące opcje:
Zaakceptuj wartości za pomocą parametrów GET lub parametrów adresu URL.
Te wartości są przekazywane jako pary name-value w adresie URL punktu końcowego. W przypadku tej opcji należy użyć metody GET w wyzwalaczu żądania . W kolejnej akcji można pobrać wartości parametrów jako dane wyjściowe wyzwalacza przy użyciu
triggerOutputs()
funkcji w wyrażeniu.Zaakceptuj wartości za pomocą ścieżki względnej dla parametrów w wyzwalaczu żądania .
Te wartości są przekazywane przez ścieżkę względną w adresie URL punktu końcowego. Należy również jawnie wybrać metodę oczekiwaną przez wyzwalacz. W kolejnej akcji można pobrać wartości parametrów jako dane wyjściowe wyzwalacza, odwołując się bezpośrednio do tych danych wyjściowych.
Akceptowanie wartości za pomocą parametrów GET
W wyzwalaczu Żądanie otwórz parametry zaawansowane, dodaj właściwość Method do wyzwalacza i wybierz metodę GET.
Aby uzyskać więcej informacji, zobacz Select expected request method (Wybieranie oczekiwanej metody żądania).
W projektancie wykonaj następujące ogólne kroki, aby dodać akcję, w której chcesz użyć wartości parametru.
W tym przykładzie wybierz akcję o nazwie Odpowiedź.
Aby skompilować
triggerOutputs()
wyrażenie, które pobiera wartość parametru, wykonaj następujące kroki:W akcji Odpowiedź wybierz wewnątrz właściwości Treść , aby wyświetlić opcje zawartości dynamicznej (ikona błyskawicy) i edytora wyrażeń (ikona formuły). Wybierz ikonę formuły, aby otworzyć edytor wyrażeń.
W polu wyrażenia wprowadź następujące wyrażenie, zastępując
parameter-name
ciąg nazwą parametru, a następnie wybierz przycisk OK.triggerOutputs()['queries']['parameter-name']
We właściwości Body wyrażenie jest rozpoznawane jako
triggerOutputs()
token.Jeśli zapiszesz przepływ pracy, odejdź od projektanta i wróć do projektanta, token wyświetli określoną nazwę parametru, na przykład:
W widoku kodu właściwość Body jest wyświetlana w definicji akcji Odpowiedź w następujący sposób:
"body": "@{triggerOutputs()['queries']['parameter-name']}",
Załóżmy na przykład, że chcesz przekazać wartość parametru o nazwie
postalCode
. Właściwość Body określa ciąg zPostal Code:
spacją końcową, po której następuje odpowiednie wyrażenie:
Testowanie wywoływanego punktu końcowego
Z wyzwalacza Żądanie skopiuj adres URL przepływu pracy i wklej adres URL do innego okna przeglądarki. W adresie URL dodaj nazwę parametru i wartość do adresu URL w następującym formacie, a następnie naciśnij Enter.
...invoke/{parameter-name}/{parameter-value}?api-version=2022-05-01...
Na przykład:
https://mystandardlogicapp.azurewebsites.net/api/Stateful-Workflow/triggers/When_a_HTTP_request_is_received/invoke/address/12345?api-version=2022-05-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig={shared-access-signature}
Przeglądarka zwraca odpowiedź z następującym tekstem:
Postal Code: 123456
Uwaga
Jeśli chcesz dołączyć symbol skrótu lub funta (#) w identyfikatorze URI, użyj tej zakodowanej wersji: %25%23
Akceptowanie wartości za pośrednictwem ścieżki względnej
W wyzwalaczu Żądanie otwórz listę Zaawansowane parametry i wybierz pozycję Ścieżka względna, która dodaje tę właściwość do wyzwalacza.
We właściwości Ścieżka względna określ ścieżkę względną parametru w schemacie JSON, który ma zostać zaakceptowany przez adres URL, na przykład
/address/{postalCode}
.W obszarze Wyzwalacz żądania wykonaj następujące ogólne kroki, aby dodać akcję, w której chcesz użyć wartości parametru.
W tym przykładzie dodaj akcję Odpowiedź .
We właściwości Treść akcji odpowiedź dołącz token reprezentujący parametr określony w ścieżce względnej wyzwalacza.
Załóżmy na przykład, że chcesz, aby akcja Odpowiedź zwróciła wartość
Postal Code: {postalCode}
.We właściwości Body wprowadź spację
Postal Code:
końcową. Umieść kursor wewnątrz pola edycji, aby lista zawartości dynamicznej pozostała otwarta.Na liście zawartości dynamicznej w sekcji Po odebraniu żądania HTTP wybierz dane wyjściowe wyzwalacza parametry ścieżki kod pocztowy.
Właściwość Body zawiera teraz wybrany parametr:
Zapisz przepływ pracy.
W wyzwalaczu Żądanie adres URL wywołania zwrotnego jest aktualizowany, a teraz zawiera ścieżkę względną, na przykład:
https://mystandardlogicapp.azurewebsites.net/api/Stateful-Workflow/triggers/When_a_HTTP_request_is_received/invoke/address/%7BpostalCode%7D?api-version=2022-05-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig={shared-access-signature}
Aby przetestować wywoływany punkt końcowy, skopiuj zaktualizowany adres URL wywołania zwrotnego z wyzwalacza Żądanie , wklej adres URL do innego okna przeglądarki, zastąp
%7BpostalCode%7D
ciąg w adresie URL ciągiem123456
, a następnie naciśnij Enter.Przeglądarka zwraca odpowiedź z następującym tekstem:
Postal Code: 123456
Uwaga
Jeśli chcesz dołączyć symbol skrótu lub funta (#) w identyfikatorze URI, użyj tej zakodowanej wersji: %25%23
Wywoływanie przepływu pracy za pośrednictwem adresu URL punktu końcowego
Po utworzeniu punktu końcowego możesz wyzwolić przepływ pracy, wysyłając żądanie HTTPS do pełnego adresu URL punktu końcowego. Przepływy pracy usługi Azure Logic Apps mają wbudowaną obsługę punktów końcowych bezpośredniego dostępu.
Tokeny wygenerowane na podstawie schematu
Po podaniu schematu JSON w wyzwalaczu Żądania projektant przepływu pracy generuje tokeny dla właściwości w tym schemacie. Następnie możesz użyć tych tokenów do przekazywania danych za pośrednictwem przepływu pracy.
Jeśli na przykład dodasz więcej właściwości, takich jak "suite"
, do schematu JSON, tokeny dla tych właściwości będą dostępne do użycia w kolejnych krokach przepływu pracy. Oto kompletny schemat JSON:
{
"type": "object",
"properties": {
"address": {
"type": "object",
"properties": {
"streetNumber": {
"type": "string"
},
"streetName": {
"type": "string"
},
"suite": {
"type": "string"
},
"town": {
"type": "string"
},
"postalCode": {
"type": "string"
}
}
}
}
}
Wywoływanie innych przepływów pracy
Możesz wywoływać inne przepływy pracy, które mogą odbierać żądania, zagnieżdżając je wewnątrz bieżącego przepływu pracy. Aby wywołać te przepływy pracy, wykonaj następujące kroki:
W projektancie wykonaj następujące ogólne kroki, aby dodać akcję Operacje przepływu pracy o nazwie Wywołaj przepływ pracy w tej aplikacji przepływu pracy.
Lista Nazwa przepływu pracy zawiera kwalifikujące się przepływy pracy do wybrania.
Z listy Nazwa przepływu pracy wybierz przepływ pracy, który chcesz wywołać, na przykład:
Odwołanie do zawartości z żądania przychodzącego
Jeśli typ zawartości żądania przychodzącego to application/json
, możesz odwołać się do właściwości w żądaniu przychodzącym. W przeciwnym razie ta zawartość jest traktowana jako pojedyncza jednostka binarna, którą można przekazać do innych interfejsów API. Aby odwołać się do tej zawartości wewnątrz przepływu pracy aplikacji logiki, musisz najpierw przekonwertować tę zawartość.
Jeśli na przykład przekazujesz zawartość o application/xml
typie, możesz użyć @xpath()
wyrażenia do wykonania wyodrębniania XPath lub użyć@json()
wyrażenia do konwertowania kodu XML na format JSON. Dowiedz się więcej o pracy z obsługiwanymi typami zawartości.
Aby uzyskać dane wyjściowe z żądania przychodzącego, możesz użyć @triggerOutputs
wyrażenia . Załóżmy na przykład, że masz dane wyjściowe, które wyglądają następująco:
{
"headers": {
"content-type" : "application/json"
},
"body": {
"myProperty" : "property value"
}
}
Aby uzyskać dostęp do właściwości body
, możesz użyć @triggerBody()
wyrażenia jako skrótu.
Odpowiadanie na żądania
Czasami chcesz odpowiedzieć na niektóre żądania, które wyzwalają przepływ pracy, zwracając zawartość do obiektu wywołującego. Aby skonstruować kod stanu, nagłówek i treść odpowiedzi, użyj akcji Odpowiedź. Ta akcja może pojawić się w dowolnym miejscu w przepływie pracy, a nie tylko na końcu przepływu pracy. Jeśli przepływ pracy nie zawiera akcji Odpowiedź, punkt końcowy odpowiada natychmiast ze stanem Zaakceptowane 202.
Aby oryginalny obiekt wywołujący pomyślnie uzyskać odpowiedź, wszystkie wymagane kroki odpowiedzi muszą zakończyć się w ramach limitu czasu żądania, chyba że wyzwalany przepływ pracy jest wywoływany jako zagnieżdżony przepływ pracy. Jeśli w ramach tego limitu nie zostanie zwrócona żadna odpowiedź, limit czasu żądania przychodzącego zostanie przekroczony i otrzyma odpowiedź limitu czasu klienta 408.
W przypadku zagnieżdżonych przepływów pracy nadrzędny przepływ pracy nadal czeka na odpowiedź do momentu ukończenia wszystkich kroków, niezależnie od tego, ile czasu jest wymagany.
Konstruowanie odpowiedzi
W treści odpowiedzi można uwzględnić wiele nagłówków i dowolnego typu zawartości. Na przykład nagłówek następującej odpowiedzi określa, że typ zawartości odpowiedzi to application/json
i że treść zawiera wartości właściwości town
i postalCode
na podstawie schematu JSON opisanego wcześniej w tym temacie dla wyzwalacza żądania .
Odpowiedzi mają następujące właściwości:
Właściwość (wyświetlanie) | Właściwość (JSON) | opis |
---|---|---|
Kod stanu | statusCode |
Kod stanu HTTPS do użycia w odpowiedzi dla żądania przychodzącego. Ten kod może być dowolnym prawidłowym kodem stanu rozpoczynającym się od 2xx, 4xx lub 5xx. Kody stanu 3xx nie są jednak dozwolone. |
Nagłówki | headers |
Co najmniej jeden nagłówek do uwzględnienia w odpowiedzi |
Treść | body |
Obiekt treści, który może być ciągiem, obiektem JSON, a nawet zawartością binarną, do którego odwołuje się poprzedni krok |
Aby wyświetlić definicję JSON akcji Odpowiedź i kompletną definicję JSON przepływu pracy, zmień widok z projektanta na widok kodu.
"Response": {
"type": "Response",
"kind": "http",
"inputs": {
"body": {
"postalCode": "@triggerBody()?['address']?['postalCode']",
"town": "@triggerBody()?['address']?['town']"
},
"headers": {
"content-type": "application/json"
},
"statusCode": 200
},
"runAfter": {}
}
Pytania i odpowiedzi
.: Co z zabezpieczeniami adresów URL dla wywołań przychodzących?
O: Platforma Azure bezpiecznie generuje adresy URL wywołania zwrotnego aplikacji logiki przy użyciu sygnatury dostępu współdzielonego (SAS). Ten podpis przechodzi jako parametr zapytania i musi zostać zweryfikowany przed uruchomieniem przepływu pracy. Platforma Azure generuje podpis przy użyciu unikatowej kombinacji klucza tajnego dla aplikacji logiki, nazwy wyzwalacza i wykonanej operacji. Jeśli więc ktoś nie ma dostępu do klucza tajnej aplikacji logiki, nie może wygenerować prawidłowego podpisu.
Ważne
W przypadku systemów produkcyjnych i wyższych zabezpieczeń zdecydowanie zalecamy wywołanie przepływu pracy bezpośrednio z przeglądarki z następujących powodów:
- Klucz dostępu współdzielonego jest wyświetlany w adresie URL.
- Nie można zarządzać zasadami zawartości zabezpieczeń ze względu na domeny udostępnione dla klientów usługi Azure Logic Apps.
Aby uzyskać więcej informacji na temat zabezpieczeń, autoryzacji i szyfrowania dla wywołań przychodzących do przepływu pracy, takich jak Transport Layer Security (TLS), wcześniej znany jako Secure Sockets Layer (SSL), Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), uwidaczniając przepływ pracy aplikacji logiki za pomocą usługi Azure API Management lub ograniczając adresy IP, które pochodzą z wywołań przychodzących, zobacz Bezpieczny dostęp i dane — dostęp do wywołań przychodzących do wyzwalaczy opartych na żądaniach.
.: Czy mogę jeszcze bardziej skonfigurować wywoływane punkty końcowe?
Uwierzytelnianie: Tak, punkty końcowe HTTPS obsługują bardziej zaawansowaną konfigurację za pośrednictwem usługi Azure API Management. Ta usługa oferuje również możliwość spójnego zarządzania wszystkimi interfejsami API, w tym aplikacjami logiki, konfigurowaniem niestandardowych nazw domen, używaniem większej liczby metod uwierzytelniania i nie tylko, na przykład:
- Zmienianie metody żądania
- Zmienianie segmentów adresów URL żądania
- Konfigurowanie domen usługi API Management w witrynie Azure Portal
- Konfigurowanie zasad sprawdzania uwierzytelniania podstawowego