Udostępnij za pomocą


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:

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.

  • Zasób aplikacji logiki z przepływem pracy, w którym chcesz utworzyć wywoływany punkt końcowy.

    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.

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:

  1. W Azure portal otwórz zasób aplikacji logicznych standardowych.

  2. W menu paska bocznego zasobu w obszarze Przepływy pracy wybierz pozycję Przepływy pracy, a następnie wybierz pusty przepływ pracy.

  3. W menu paska bocznego przepływu pracy w obszarze Narzędzia wybierz projektanta, aby otworzyć przepływ pracy.

  4. Dodaj wyzwalacz Żądania do przepływu pracy, wykonując ogólne kroki dodawania wyzwalacza.

    Ten przykład jest kontynuowany z wyzwalaczem o nazwie Po odebraniu żądania HTTP.

  5. 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"
                }
             }
          }
       }
    }
    

    Zrzut ekranu pokazujący Standardowy przepływ pracy z wyzwalaczem typu żądanie i parametrem schematu JSON dla treści żądania z przykładowym schematem.

    Możesz też wygenerować schemat JSON, podając przykładowy ładunek:

    1. W wyzwalaczu Żądanie wybierz pozycję Użyj przykładowego ładunku do wygenerowania schematu.

    2. 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"
        }
      }
      
    3. Gdy wszystko będzie gotowe, wybierz pozycję Gotowe.

      Pole Schemat JSON Treść żądania zawiera teraz wygenerowany schemat.

  6. Zapisz przepływ pracy.

    Pole Adres URL 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 logicznych aplikacji. Ten adres URL zawiera parametry zapytania, które określają klucz sygnatury dostępu współdzielonego (SAS), który jest używany do uwierzytelniania.

    Zrzut ekranu przedstawiający standardowy przepływ pracy, wyzwalacz żądania i wygenerowany adres URL wywołania zwrotnego dla punktu końcowego.

  7. Skopiuj adres URL wywołania zwrotnego, wybierając ikonę kopiowania plików obok pola Adres URL HTTP .

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

  1. W wyzwalaczu Żądanie, z listy Metoda, należy wybrać metodę, której wyzwalacz powinien się spodziewać. 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.

  • Umożliwiaj przyjmowanie wartości poprzez ścieżkę względną w parametrach wyzwalacza żą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

  1. W wyzwalaczu Żądanie z listy Metoda wybierz metodę GET .

    Aby uzyskać więcej informacji, zobacz Select expected request method (Wybieranie oczekiwanej metody żądania).

  2. Dodaj akcję Odpowiedź do przepływu pracy, wykonując ogólne kroki, aby dodać akcję.

  3. Aby skompilować triggerOutputs() wyrażenie, które pobiera wartość parametru, wykonaj następujące kroki:

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

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

      Zrzut ekranu przedstawia standardowy przepływ pracy, działanie odpowiedzi i wyrażenie triggerOutputs.

      We właściwości Body wyrażenie jest rozpoznawane jako triggerOutputs() token.

      Zrzut ekranu przedstawiający Standardowy przepływ pracy z akcją odpowiedzi oraz rozwiązaną wyrażeniem triggerOutputs().

      Jeśli zapiszesz przepływ pracy, odejdź od projektanta i wróć do projektanta, token wyświetli określoną nazwę parametru, na przykład:

      Zrzut ekranu przedstawiający standardowy przepływ pracy z rozpoznanymi wyrażeniami akcji odpowiedzi dla nazwy parametru.

      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 z Postal Code: spacją końcową, po której następuje odpowiednie wyrażenie:

      Zrzut ekranu przedstawiający standardowy przepływ pracy z akcją Odpowiedź i przykładowe wyrażenie triggerOutputs.

Testowanie wywoływanego punktu końcowego

  1. 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: "Kod pocztowy: 123456"

    Zrzut ekranu przedstawiający przeglądarkę z odpowiedzią standardowego przepływu pracy z żądania na adres URL wywołania zwrotnego.

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

  1. W wyzwalaczu Żądanie otwórz listę Zaawansowane parametry i wybierz pozycję Ścieżka względna, która dodaje tę właściwość do wyzwalacza.

    Zrzut ekranu przedstawiający standardowy przepływ pracy, wyzwalacz żądania i dodano właściwość o nazwie Ścieżka względna.

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

    Zrzut ekranu przedstawia wartość parametru standardowego przepływu pracy, wyzwalacza żądania i ścieżki względnej.

  3. We właściwości Treść akcji Odpowiedź dołącz token, który reprezentuje 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}.

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

    2. Wybierz ikonę błyskawicy, aby otworzyć listę zawartości dynamicznej. W sekcji Po odebraniu żądania HTTP wybierz dane wyjściowe wyzwalacza postalCode .

      Zrzut ekranu przedstawia standardowy przepływ pracy, akcję odpowiedzi i określone dane wyjściowe wyzwalacza, które mają być uwzględnione w treści odpowiedzi.

      Właściwość Body zawiera teraz wybrany parametr:

      Zrzut ekranu przedstawia standardowy przepływ pracy i przykładową treść odpowiedzi z parametrem .

  4. 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}

  5. Aby przetestować wywoływany punkt końcowy, skopiuj zaktualizowany adres URL wywołania zwrotnego z wyzwalacza Żądanie, wklej ten adres do innego okna przeglądarki, zastąp w nim %7BpostalCode%7D przez 123456 i naciśnij Enter.

    Przeglądarka zwraca odpowiedź z następującym tekstem: "Kod pocztowy: 123456"

    Zrzut ekranu przedstawiający przeglądarkę z odpowiedzią standardowego przepływu pracy z żądania na adres URL wywołania zwrotnego.

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:

  1. W projektancie dodaj akcję Operacje przepływu pracy o nazwie Wywołaj przepływ pracy w tej aplikacji logicznej.

    Lista Nazwa przepływu pracy zawiera kwalifikujące się przepływy pracy do wybrania.

  2. Z listy Nazwa przepływu pracy wybierz przepływ pracy, który chcesz wywołać, na przykład:

    Zrzut ekranu przedstawiający standardowy przepływ pracy, akcję o nazwie Wywołaj przepływ pracy w tej aplikacji przepływu pracy, otwartą listę nazw przepływu pracy i dostępne przepływy pracy do wywołania.

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() 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ć wyrażenia triggerBody() 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 natychmiast odpowiada ze statusem 202 Zaakceptowano.

Aby oryginalny obiekt wywołujący pomyślnie otrzymał odpowiedź, wszystkie kroki wymagane do udzielenia odpowiedzi muszą zostać zakończone w limicie limitu czasu żądania , chyba że wyzwolony 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.

Zrzut ekranu pokazuje akcję odpowiedzi oraz typ zawartości odpowiedzi.

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": {}
}

Najczęściej zadawane pytania

Co z zabezpieczeniami adresów URL dla wywołań przychodzących?

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),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 pochodzące z wywołań przychodzących, zobacz Bezpieczny dostęp i dane — dostęp do wywołań przychodzących do wyzwalaczy opartych na żądaniach.

Czy można jeszcze bardziej skonfigurować wywoływane punkty końcowe?

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: