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.

  • Przepływ pracy aplikacji logiki, w którym chcesz użyć wyzwalacza opartego na żądaniach, aby 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.

  • Aby przetestować adres URL tworzonego punktu końcowego z możliwością wywołania, potrzebne jest narzędzie lub aplikacja, taka jak Postman.

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 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ć wyzwalacz żądania o nazwie Po odebraniu żądania HTTP.

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

    Screenshot shows Standard workflow with Request trigger and Request Body JSON Schema parameter with example schema.

    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.

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

    Screenshot shows Standard workflow, Request trigger, and generated callback URL for endpoint.

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

      1. W menu przepływu pracy wybierz pozycję Przegląd.

      2. Na stronie Przegląd w obszarze Adres URL przepływu pracy przenieś wskaźnik za pośrednictwem adresu URL i wybierz pozycję Kopiuj do schowka:

        Screenshot shows Standard workflow and Overview page with workflow URL.

  6. Aby przetestować adres URL wywołania zwrotnego, który ma teraz dla wyzwalacza Żądanie, użyj narzędzia lub aplikacji, takiej jak Postman, i wyślij żądanie przy użyciu metody oczekiwanej przez wyzwalacz żądania.

    W tym przykładzie użyto POST metody :

    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 otwórz listę Zaawansowane parametry i wybierz pozycję Metoda, która dodaje tę właściwość do wyzwalacza.

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

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

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

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

      Screenshot shows Standard workflow, Response action, and the triggerOutputs() expression.

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

      Screenshot shows Standard workflow with Response action's resolved triggerOutputs() expression.

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

      Screenshot shows Standard workflow with Response action's resolved expression for parameter name.

      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:

      Screenshot shows Standard workflow with Response action and example triggerOutputs() expression.

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 klawisz 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

    Screenshot shows browser with Standard workflow response from request to callback URL.

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.

    Screenshot shows Standard workflow, Request trigger, and added property named Relative path.

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

    Screenshot shows Standard workflow, Request trigger, and Relative path parameter value.

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

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

    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. Na liście zawartości dynamicznej w sekcji Po odebraniu żądania HTTP wybierz dane wyjściowe wyzwalacza parametry ścieżki kod pocztowy.

      Screenshot shows Standard workflow, Response action, and specified trigger output to include in response body.

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

      Screenshot shows Standard workflow and example response body with parameter.

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

  6. 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ągiem 123456, a następnie naciśnij klawisz Enter.

    Przeglądarka zwraca odpowiedź z następującym tekstem: Postal Code: 123456

    Screenshot shows browser with Standard workflow response from request to callback URL.

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

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

    Screenshot shows Standard workflow, action named Invoke a workflow in this workflow app, opened Workflow Name list, and available workflows to call.

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.

Screenshot shows Response action and response content type.

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

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

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

Następne kroki