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ź.

  1. W witrynie Azure Portal otwórz zasób standardowej aplikacji logiki i pusty przepływ pracy w projektancie.

  2. 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.

  3. 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:

  4. Aby dodać inne dostępne parametry, otwórz listę Parametry zaawansowane i wybierz żądane parametry.

  5. Dodaj inne akcje, które mają być uruchamiane po uruchomieniu wyzwalacza.

  6. 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ź.

  1. 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.

  2. 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.

  3. 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:

  4. Aby dodać inne dostępne parametry, otwórz listę Parametry zaawansowane i wybierz żądane parametry.

  5. 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ę.

Uwierzytelnianie certyfikatów TLS/SSL

  1. W ustawieniach aplikacji aplikacji logiki dodaj lub zaktualizuj ustawienie aplikacji . WEBSITE_LOAD_ROOT_CERTIFICATES

  2. 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:

  1. Otwórz plik local.settings.json projektu aplikacji logiki.

  2. Values W obiekcie JSON dodaj lub zaktualizuj WEBSITE_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:

    1. 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)..

    2. 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ą:

Certyfikat klienta lub uwierzytelnianie OAuth identyfikatora entra firmy Microsoft z uwierzytelnianiem typu poświadczeń "Certyfikat"

  1. W ustawieniach aplikacji aplikacji logiki dodaj lub zaktualizuj ustawienie aplikacji . WEBSITE_LOAD_USER_PROFILE

  2. 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:

  1. Otwórz plik local.settings.json projektu aplikacji logiki.

  2. Values W obiekcie JSON dodaj lub zaktualizuj WEBSITE_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ą:

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

Zrzut ekranu przedstawia standardowy przepływ pracy z akcją HTTP i danymi formularza wieloczęściowego.

Przepływ pracy użycia

Zrzut ekranu przedstawiający przepływ pracy Zużycie z akcją HTTP i danymi formularza wieloczęściowego.

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

Zrzut ekranu przedstawiający przepływ pracy w warstwie Standardowa z nagłówkiem żądania HTTP i typu zawartości ustawionym na wartość application/x-www-form-urlencoded.

Przepływ pracy użycia

Zrzut ekranu przedstawiający przepływ pracy Zużycie z nagłówkiem żądania HTTP i typu zawartości ustawionym na wartość application/x-www-form-urlencoded.

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*

    1. W projektancie przepływu pracy wybierz akcję HTTP. W otwartym okienku informacji wybierz pozycję Ustawienia.

    2. W obszarze Sieć znajdź ustawienie Wzorzec asynchroniczny.

    Przepływ pracy użycia

    1. W projektancie przepływu pracy na pasku tytułu akcji HTTP wybierz przycisk wielokropka (...), który otwiera ustawienia akcji.

    2. 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:

Wyłącz ustawienie asynchronicznego wzorca

  1. W projektancie przepływu pracy wybierz akcję HTTP, a następnie w otwartym okienku informacji wybierz pozycję Ustawienia.

  2. 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-Afterelement :

{
    "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 Stronicowaniew 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ątkiem Accept-version
  • Allow
  • Content-* nagłówki z wyjątkiem Content-Disposition, Content-Encodingi Content-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.

Następne kroki