Wywoływanie zewnętrznych punktów końcowych HTTP lub HTTPS z przepływów pracy 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 wysyła żądania wychodzące do punktów końcowych w innych usługach lub systemach za pośrednictwem protokołu HTTP lub HTTPS. Załóżmy na przykład, że chcesz monitorować punkt końcowy usługi dla witryny internetowej, sprawdzając ten punkt końcowy zgodnie z określonym harmonogramem. Gdy w tym punkcie końcowym wystąpi określone zdarzenie, takie jak przejście witryny internetowej, to zdarzenie wyzwala przepływ pracy i uruchamia akcje w tym przepływie pracy.
Uwaga
Aby utworzyć przepływ pracy, który odbiera przychodzące wywołania HTTPS i odpowiada na nie, zobacz 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 oraz wbudowanej akcji Wyzwalacz żądania i Odpowiedź.
W tym przewodniku pokazano, jak używać wyzwalacza HTTP i akcji HTTP, aby przepływ pracy mógł wysyłać wywołania wychodzące do innych usług i systemów, na przykład:
Aby sprawdzić lub sondować punkt końcowy zgodnie z harmonogramem cyklicznym, dodaj wyzwalacz HTTP jako pierwszy krok w przepływie pracy. Za każdym razem, gdy wyzwalacz sprawdza punkt końcowy, wyzwalacz wywołuje lub wysyła żądanie do punktu końcowego. Odpowiedź punktu końcowego określa, czy przepływ pracy jest uruchamiany. Wyzwalacz przekazuje dowolną zawartość z odpowiedzi punktu końcowego na akcje w przepływie pracy.
Aby wywołać punkt końcowy z dowolnego miejsca w przepływie pracy, dodaj akcję HTTP. Odpowiedź punktu końcowego określa sposób działania pozostałych akcji przepływu pracy.
Wymagania wstępne
Konto i subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, zarejestruj się w celu założenia bezpłatnego konta platformy Azure.
Adres URL docelowego punktu końcowego, który chcesz wywołać
Przepływ pracy aplikacji logiki, z którego chcesz wywołać docelowy punkt końcowy. Aby rozpocząć od wyzwalacza HTTP, potrzebny jest pusty przepływ pracy. Aby użyć akcji HTTP, uruchom przepływ pracy przy użyciu dowolnego wyzwalacza. W tym przykładzie wyzwalacz HTTP jest używany jako pierwszy krok.
dokumentacja techniczna Połączenie or
Aby uzyskać informacje techniczne dotyczące parametrów wyzwalacza i akcji, zobacz następujące sekcje:
Dodawanie wyzwalacza HTTP
Ten wbudowany wyzwalacz wykonuje wywołanie HTTP do określonego adresu URL punktu końcowego i zwraca odpowiedź.
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ć wbudowany wyzwalacz o nazwie HTTP do przepływu pracy.
W tym przykładzie zmieniono nazwę wyzwalacza na wyzwalacz HTTP — wywołaj adres URL punktu końcowego, aby wyzwalacz miał bardziej opisową nazwę. Ponadto w dalszej części przykładu dodano akcję HTTP, a nazwy operacji w przepływie pracy muszą być unikatowe.
Podaj wartości parametrów wyzwalacza HTTP, które mają zostać uwzględnione w wywołaniu do docelowego punktu końcowego. Skonfiguruj cykl tak, jak często wyzwalacz ma sprawdzać docelowy punkt końcowy.
W przypadku wybrania typu uwierzytelniania innego niż Brak ustawienia uwierzytelniania różnią się w zależności od wybranego ustawienia. Aby uzyskać więcej informacji na temat typów uwierzytelniania dostępnych dla protokołu HTTP, zobacz następujące tematy:
Aby dodać inne dostępne parametry, otwórz listę Parametry zaawansowane i wybierz żądane parametry.
Dodaj inne akcje, które mają być uruchamiane po uruchomieniu wyzwalacza.
Gdy wszystko będzie gotowe, zapisz proces. Na pasku narzędzi projektanta wybierz pozycję Zapisz.
Dodawanie akcji HTTP
Ta wbudowana akcja powoduje wywołanie HTTP do określonego adresu URL punktu końcowego i zwraca odpowiedź.
W witrynie Azure Portal otwórz aplikację logiki Zużycie i przepływ pracy w projektancie.
W tym przykładzie użyto wyzwalacza HTTP dodanego w poprzedniej sekcji jako pierwszego kroku.
Wykonaj następujące ogólne kroki, aby dodać wbudowaną akcję o nazwie HTTP do przepływu pracy.
W tym przykładzie zmieniono nazwę akcji na Akcja HTTP — wywołaj adres URL punktu końcowego, aby krok miał bardziej opisową nazwę. Ponadto nazwy operacji w przepływie pracy muszą być unikatowe.
Podaj wartości parametrów akcji HTTP, które mają zostać uwzględnione w wywołaniu do docelowego punktu końcowego.
W przypadku wybrania typu uwierzytelniania innego niż Brak ustawienia uwierzytelniania różnią się w zależności od wybranego ustawienia. Aby uzyskać więcej informacji na temat typów uwierzytelniania dostępnych dla protokołu HTTP, zobacz następujące tematy:
Aby dodać inne dostępne parametry, otwórz listę Parametry zaawansowane i wybierz żądane parametry.
Gdy wszystko będzie gotowe, zapisz proces. Na pasku narzędzi projektanta wybierz pozycję Zapisz.
Wyzwalanie i dane wyjściowe akcji
Poniżej przedstawiono więcej informacji na temat danych wyjściowych wyzwalacza lub akcji HTTP, które zwracają następujące informacje:
Właściwość | Type | Opis |
---|---|---|
headers |
Obiekt JSON | Nagłówki żądania |
body |
Obiekt JSON | Obiekt z zawartością treści żądania |
status code |
Integer | Kod stanu żądania |
Kod stanu | opis |
---|---|
200 | OK |
202 | Zaakceptowano |
400 | Nieprawidłowe żądanie |
401 | Brak autoryzacji |
403 | Dostęp zabroniony |
404 | Nie znaleziono |
500 | Wewnętrzny błąd serwera. Wystąpił nieznany błąd. |
Zabezpieczenia adresu URL dla wywołań wychodzących
Aby uzyskać informacje na temat szyfrowania, zabezpieczeń i autoryzacji dla wywołań wychodzących z przepływu pracy, takich jak Transport Layer Security (TLS), wcześniej znane jako Secure Sockets Layer (SSL), certyfikaty z podpisem własnym lub Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), zobacz Bezpieczny dostęp i dane — dostęp do wywołań wychodzących do innych usług i systemów.
Uwierzytelnianie dla środowiska z jedną dzierżawą
Jeśli masz zasób standardowej aplikacji logiki w usłudze Azure Logic Apps z jedną dzierżawą i chcesz użyć operacji HTTP z dowolnym z następujących typów uwierzytelniania, pamiętaj, aby wykonać dodatkowe kroki konfiguracji odpowiedniego typu uwierzytelniania. W przeciwnym razie wywołanie nie powiedzie się.
Certyfikat TLS/SSL: dodaj ustawienie aplikacji i
WEBSITE_LOAD_ROOT_CERTIFICATES
ustaw wartość na odcisk palca certyfikatu TLS/SSL.Certyfikat klienta lub Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth) z typem poświadczeń "Certyfikat": Dodaj ustawienie aplikacji,
WEBSITE_LOAD_USER_PROFILE
i ustaw wartość na1
.
Uwierzytelnianie certyfikatów TLS/SSL
W ustawieniach aplikacji aplikacji logiki dodaj lub zaktualizuj ustawienie aplikacji .
WEBSITE_LOAD_ROOT_CERTIFICATES
Dla wartości ustawienia podaj odcisk palca certyfikatu TLS/SSL jako certyfikat główny, który ma być zaufany.
"WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS/SSL-certificate>"
Jeśli na przykład pracujesz w programie Visual Studio Code, wykonaj następujące kroki:
Otwórz plik local.settings.json projektu aplikacji logiki.
Values
W obiekcie JSON dodaj lub zaktualizujWEBSITE_LOAD_ROOT_CERTIFICATES
ustawienie:{ "IsEncrypted": false, "Values": { <...> "AzureWebJobsStorage": "UseDevelopmentStorage=true", "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS/SSL-certificate>", <...> } }
Uwaga
Aby znaleźć odcisk palca, wykonaj następujące kroki:
W menu zasobów aplikacji logiki w obszarze Ustawienia wybierz pozycję Ustawienia protokołu TLS/SSL>Certyfikaty kluczy prywatnych (pfx) lub Certyfikaty kluczy publicznych (.cer)..
Znajdź certyfikat, którego chcesz użyć, i skopiuj odcisk palca.
Aby uzyskać więcej informacji, zobacz Znajdowanie odcisku palca — aplikacja systemu Azure Service.
Aby uzyskać więcej informacji, zapoznaj się z następującą dokumentacją:
- Edytowanie ustawień hosta i aplikacji dla aplikacji logiki w usłudze Azure Logic Apps z jedną dzierżawą
- Certyfikaty klienta prywatnego — usługa aplikacja systemu Azure
Certyfikat klienta lub uwierzytelnianie OAuth identyfikatora entra firmy Microsoft z uwierzytelnianiem typu poświadczeń "Certyfikat"
W ustawieniach aplikacji aplikacji logiki dodaj lub zaktualizuj ustawienie aplikacji .
WEBSITE_LOAD_USER_PROFILE
Dla wartości ustawienia określ wartość
1
."WEBSITE_LOAD_USER_PROFILE": "1"
Jeśli na przykład pracujesz w programie Visual Studio Code, wykonaj następujące kroki:
Otwórz plik local.settings.json projektu aplikacji logiki.
Values
W obiekcie JSON dodaj lub zaktualizujWEBSITE_LOAD_USER_PROFILE
ustawienie:{ "IsEncrypted": false, "Values": { <...> "AzureWebJobsStorage": "UseDevelopmentStorage=true", "WEBSITE_LOAD_USER_PROFILE": "1", <...> } }
Aby uzyskać więcej informacji, zapoznaj się z następującą dokumentacją:
- Edytowanie ustawień hosta i aplikacji dla aplikacji logiki w usłudze Azure Logic Apps z jedną dzierżawą
- Certyfikaty klienta prywatnego — usługa aplikacja systemu Azure
Zawartość z typem danych wieloczęściowych/formularzy
Aby obsłużyć zawartość typu multipart/form-data
w żądaniach HTTP, można dodać obiekt JSON zawierający $content-type
atrybuty i $multipart
do treści żądania HTTP przy użyciu tego formatu.
"body": {
"$content-type": "multipart/form-data",
"$multipart": [
{
"body": "<output-from-trigger-or-previous-action>",
"headers": {
"Content-Disposition": "form-data; name=file; filename=<file-name>"
}
}
]
}
Załóżmy na przykład, że masz przepływ pracy, który wysyła żądanie HTTP POST dla pliku programu Excel do witryny internetowej przy użyciu interfejsu API tej witryny, który obsługuje multipart/form-data
typ. W poniższym przykładzie pokazano, jak ta akcja może się pojawić:
Standardowy przepływ pracy
Przepływ pracy użycia
Oto ten sam przykład pokazujący definicję JSON akcji HTTP w podstawowej definicji przepływu pracy:
"HTTP_action": {
"inputs": {
"body": {
"$content-type": "multipart/form-data",
"$multipart": [
{
"body": "@trigger()",
"headers": {
"Content-Disposition": "form-data; name=file; filename=myExcelFile.xlsx"
}
}
]
},
"method": "POST",
"uri": "https://finance.contoso.com"
},
"runAfter": {},
"type": "Http"
}
Zawartość z typem application/x-www-form-urlencoded
Aby podać dane zakodowane w postaci adresu URL w treści żądania HTTP, należy określić, że dane mają application/x-www-form-urlencoded
typ zawartości. W wyzwalaczu lub akcji HTTP dodaj content-type
nagłówek. Ustaw wartość nagłówka na application/x-www-form-urlencoded
.
Załóżmy na przykład, że masz aplikację logiki, która wysyła żądanie HTTP POST do witryny internetowej obsługującej application/x-www-form-urlencoded
ten typ. Oto jak ta akcja może wyglądać:
Standardowy przepływ pracy
Przepływ pracy użycia
Zachowanie asynchronicznej odpowiedzi na żądanie
W przypadku stanowych przepływów pracy zarówno w wielodostępnych, jak i jednodostępnych usłudze Azure Logic Apps wszystkie akcje oparte na protokole HTTP są zgodne ze standardowym wzorcem operacji asynchronicznych jako zachowaniem domyślnym. Ten wzorzec określa, że po wywołaniu akcji HTTP lub wysłaniu żądania do punktu końcowego, usługi, systemu lub interfejsu API odbiorca natychmiast zwraca odpowiedź "ZAAKCEPTOWANE" 202. Ten kod potwierdza, że odbiorca zaakceptował żądanie, ale nie zakończył przetwarzania. Odpowiedź może zawierać location
nagłówek, który określa identyfikator URI i identyfikator odświeżania, którego obiekt wywołujący może użyć do sondowania lub sprawdzenia stanu żądania asynchronicznego, dopóki odbiorca nie przestanie przetwarzać i zwraca odpowiedź powodzenia "200 OK" lub inną odpowiedź inną niż 202. Jednak obiekt wywołujący nie musi czekać na zakończenie przetwarzania żądania i może kontynuować wykonywanie następnej akcji. Aby uzyskać więcej informacji, zobacz Asynchroniczne integracje mikrousług wymusza autonomię mikrousług.
W przypadku bezstanowych przepływów pracy w usłudze Azure Logic Apps z jedną dzierżawą akcje oparte na protokole HTTP nie używają wzorca operacji asynchronicznej. Zamiast tego są one uruchamiane synchronicznie, zwracają odpowiedź "ZAAKCEPTOWANE 202" zgodnie z rzeczywistym działaniem i przejdź do następnego kroku wykonywania przepływu pracy. Jeśli odpowiedź zawiera location
nagłówek, bezstanowy przepływ pracy nie będzie sondować określonego identyfikatora URI w celu sprawdzenia stanu. Aby postępować zgodnie ze standardowym wzorcem operacji asynchronicznych, zamiast tego użyj stanowego przepływu pracy.
Podstawowa definicja JSON (JavaScript Object Notation) akcji HTTP jest niejawnie zgodna ze wzorcem operacji asynchronicznej.
Akcja HTTP, ale nie wyzwalacz, ma ustawienie Asynchroniczne wzorzec , które jest domyślnie włączone. To ustawienie określa, że obiekt wywołujący nie czeka na zakończenie przetwarzania i może przejść do następnej akcji, ale kontynuuje sprawdzanie stanu do momentu zatrzymania przetwarzania. Jeśli to ustawienie jest wyłączone, określa, że obiekt wywołujący czeka na zakończenie przetwarzania przed przejściem do następnej akcji.
Aby znaleźć ustawienie Asynchronous Pattern (Wzorzec asynchroniczny), wykonaj następujące kroki w zależności od tego, czy masz przepływ pracy w warstwie Standardowa, czy Zużycie:
Standardowy przepływ pracy*
W projektancie przepływu pracy wybierz akcję HTTP. W otwartym okienku informacji wybierz pozycję Ustawienia.
W obszarze Sieć znajdź ustawienie Wzorzec asynchroniczny.
Przepływ pracy użycia
W projektancie przepływu pracy na pasku tytułu akcji HTTP wybierz przycisk wielokropka (...), który otwiera ustawienia akcji.
Znajdź ustawienie Wzorzec asynchroniczny.
Wyłączanie operacji asynchronicznych
Czasami możesz wyłączyć asynchroniczne zachowanie akcji HTTP w określonych scenariuszach, na przykład wtedy, gdy chcesz:
- Unikaj przekroczenia limitu czasu http dla długotrwałych zadań
- Wyłączanie sprawdzania nagłówków lokalizacji
Wyłącz ustawienie asynchronicznego wzorca
W projektancie przepływu pracy wybierz akcję HTTP, a następnie w otwartym okienku informacji wybierz pozycję Ustawienia.
W obszarze Sieć znajdź ustawienie Wzorzec asynchroniczny. Jeśli to ustawienie jest włączone, zmień ustawienie na Wyłączone .
Wyłącz wzorzec asynchroniczny w definicji JSON akcji
W podstawowej definicji JSON akcji HTTP dodaj "DisableAsyncPattern"
opcję operacji do definicji akcji, tak aby akcja podążała za wzorcem operacji synchronicznej. Aby uzyskać więcej informacji, zobacz również Uruchamianie akcji we wzorcu operacji synchronicznej.
Unikaj przekroczenia limitu czasu http dla długotrwałych zadań
Żądania HTTP mają limit czasu. Jeśli masz długotrwałą akcję HTTP, która przekracza limit czasu z powodu tego limitu, masz następujące opcje:
Wyłącz wzorzec operacji asynchronicznej akcji HTTP, aby akcja nie stale sondować ani sprawdzać stanu żądania. Zamiast tego akcja czeka na odpowiedź odbiorcy ze stanem i wynikami po zakończeniu przetwarzania żądania.
Zastąp akcję HTTP akcją elementu webhook HTTP, która oczekuje, aż odbiorca odpowie stanem i wynikami po zakończeniu przetwarzania żądania.
Konfigurowanie interwału między próbami ponawiania próby za pomocą nagłówka Ponów próbę po
Aby określić liczbę sekund między ponownymi próbami, możesz dodać Retry-After
nagłówek do odpowiedzi akcji HTTP. Jeśli na przykład docelowy punkt końcowy zwraca 429 - Too many requests
kod stanu, można określić dłuższy interwał między ponowną próbą. Nagłówek Retry-After
działa również z 202 - Accepted
kodem stanu.
Oto ten sam przykład pokazujący odpowiedź akcji HTTP zawierającą Retry-After
element :
{
"statusCode": 429,
"headers": {
"Retry-After": "300"
}
}
Pomoc techniczna obsługi stronicowania
Czasami usługa docelowa odpowiada, zwracając wyniki po jednej stronie naraz. Jeśli odpowiedź określa następną stronę z właściwością nextLink lub @odata.nextLink, możesz włączyć ustawienie Stronicowanie w akcji HTTP. To ustawienie powoduje, że akcja HTTP będzie automatycznie podążać za tymi linkami i uzyskać następną stronę. Jeśli jednak odpowiedź określa następną stronę z dowolnym innym tagiem, może być konieczne dodanie pętli do przepływu pracy. Wykonaj tę pętlę zgodnie z tym tagiem i ręcznie pobierz każdą stronę do momentu, aż tag ma wartość null.
Wyłączanie sprawdzania nagłówków lokalizacji
Niektóre punkty końcowe, usługi, systemy lub interfejsy API zwracają 202 ACCEPTED
odpowiedź, która nie ma nagłówka location
. Aby uniknąć ciągłego sprawdzania stanu żądania, gdy location
nagłówek nie istnieje, możesz mieć następujące opcje:
Wyłącz wzorzec operacji asynchronicznej akcji HTTP, aby akcja nie stale sondować ani sprawdzać stanu żądania. Zamiast tego akcja czeka na odpowiedź odbiorcy ze stanem i wynikami po zakończeniu przetwarzania żądania.
Zastąp akcję HTTP akcją elementu webhook HTTP, która oczekuje, aż odbiorca odpowie stanem i wynikami po zakończeniu przetwarzania żądania.
Znane problemy
Pominięto nagłówki HTTP
Jeśli wyzwalacz LUB akcja HTTP zawiera te nagłówki, usługa Azure Logic Apps usuwa te nagłówki z wygenerowanego komunikatu żądania bez wyświetlania żadnego ostrzeżenia lub błędu:
Accept-*
nagłówki z wyjątkiemAccept-version
Allow
Content-*
nagłówki z wyjątkiemContent-Disposition
,Content-Encoding
iContent-Type
, które są honorowane podczas korzystania z operacji POST i PUT. Jednak usługa Azure Logic Apps usuwa te nagłówki podczas korzystania z operacji GET.Cookie
nagłówek, ale usługa Azure Logic Apps honoruje dowolną wartość, która jest określana przy użyciu właściwości Cookie .Expires
Host
Last-Modified
Origin
Set-Cookie
Transfer-Encoding
Chociaż usługa Azure Logic Apps nie powstrzyma zapisywania aplikacji logiki, które używają wyzwalacza HTTP lub akcji z tymi nagłówkami, usługa Azure Logic Apps ignoruje te nagłówki.
Zawartość odpowiedzi nie jest zgodna z oczekiwanym typem zawartości
Akcja HTTP zgłasza błąd BadRequest , jeśli akcja HTTP wywołuje interfejs API zaplecza z Content-Type
nagłówkiem ustawionym na wartość application/json, ale odpowiedź z zaplecza nie zawiera zawartości w formacie JSON, co kończy się niepowodzeniem wewnętrznej weryfikacji formatu JSON.