Vytváření pracovních postupů, které můžete volat, aktivovat nebo vnořit pomocí koncových bodů HTTPS v Azure Logic Apps

Platí pro: Azure Logic Apps (Consumption + Standard)

Některé scénáře mohou vyžadovat vytvoření pracovního postupu aplikace logiky, který může přijímat příchozí požadavky z jiných služeb nebo pracovních postupů nebo pracovního postupu, který můžete volat pomocí adresy URL. Pro tuto úlohu můžete v pracovním postupu vystavit nativní synchronní koncový bod HTTPS, když použijete některý z následujících typů triggerů založených na žádostech:

Tato příručka ukazuje, jak vytvořit pro pracovní postup volatelný koncový bod přidáním triggeru požadavku a následným voláním tohoto koncového bodu z jiného pracovního postupu. Všechny principy se identicky vztahují na ostatní typy triggerů založené na požadavcích, které můžou přijímat příchozí požadavky.

Požadavky

  • Účet a předplatné Azure. Pokud předplatné nemáte, zaregistrujte si bezplatný účet Azure.

  • Pracovní postup aplikace logiky, ve kterém chcete k vytvoření volatelného koncového bodu použít trigger založený na požadavku. Můžete začít prázdným pracovním postupem nebo existujícím pracovním postupem, kde můžete nahradit aktuální aktivační událost. Tento příklad začíná prázdným pracovním postupem.

  • K otestování adresy URL vytvořeného volatelného koncového bodu budete potřebovat nástroj nebo aplikaci, jako je Postman.

Vytvoření volatelného koncového bodu

Na základě toho, jestli máte pracovní postup aplikace logiky Standard nebo Consumption, postupujte podle odpovídajících kroků:

  1. Na webu Azure Portal otevřete prostředek aplikace logiky Standard a prázdný pracovní postup v návrháři.

  2. Pokud chcete přidat trigger požadavku s názvem Při přijetí požadavku HTTP, postupujte podle těchto obecných kroků.

  3. Volitelně můžete do pole Schéma JSON textu požadavku zadat schéma JSON, které popisuje datovou část nebo data, která očekáváte, že trigger bude přijímat.

    Návrhář používá toto schéma ke generování tokenů, které představují výstupy triggeru. Tyto výstupy pak můžete snadno odkazovat v rámci pracovního postupu aplikace logiky. Přečtěte si další informace o tokenech generovaných ze schémat JSON.

    V tomto příkladu zadejte následující schéma:

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

    Nebo můžete vygenerovat schéma JSON tím, že poskytnete ukázkovou datovou část:

    1. V triggeru požadavku vyberte Použít ukázkovou datovou část k vygenerování schématu.

    2. Do pole Enter nebo vložení ukázkové datové části JSON zadejte ukázkovou datovou část, například:

      {
         "address": {
            "streetNumber": "00000",
            "streetName": "AnyStreet",
            "town": "AnyTown",
            "postalCode": "11111-1111"
        }
      }
      
    3. Až budete připraveni, vyberte Hotovo.

      Pole Základní schéma JSON požadavku teď zobrazuje vygenerované schéma.

  4. Uložte pracovní postup.

    Pole ADRESA URL HTTP POST teď zobrazuje vygenerovanou adresu URL zpětného volání, kterou můžou ostatní služby použít k volání a aktivaci pracovního postupu aplikace logiky. Tato adresa URL obsahuje parametry dotazu, které určují klíč sdíleného přístupového podpisu (SAS), který se používá k ověřování.

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

  5. Pokud chcete zkopírovat adresu URL zpětného volání, máte tyto možnosti:

    • Napravo od pole ADRESA URL HTTP POST vyberte Kopírovat adresu URL (ikona kopírovat soubory).

    • Zkopírujte adresu URL zpětného volání ze stránky Přehled pracovního postupu.

      1. V nabídce pracovního postupu vyberte Přehled.

      2. Na stránce Přehled v části Adresa URL pracovního postupu přesuňte ukazatel na adresu URL a vyberte Kopírovat do schránky:

        Screenshot shows Standard workflow and Overview page with workflow URL.

  6. Pokud chcete otestovat adresu URL zpětného volání, kterou teď máte pro trigger požadavku, použijte nástroj nebo aplikaci, jako je Postman, a odešlete požadavek pomocí metody, kterou trigger požadavku očekává.

    Tento příklad používá metodu POST :

    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}

Výběr očekávané metody požadavku

Trigger požadavku ve výchozím nastavení očekává POST požadavek. Můžete však zadat jinou metodu, kterou volající musí použít, ale pouze jednu metodu.

  1. V triggeru Požadavku otevřete seznam rozšířených parametrů a vyberte Metodu, která tuto vlastnost přidá do triggeru.

  2. V seznamu Metoda vyberte metodu, kterou by trigger měl místo toho očekávat. Nebo můžete zadat vlastní metodu.

    Vyberte například metodu GET , abyste mohli později otestovat adresu URL koncového bodu.

Předání parametrů přes adresu URL koncového bodu

Pokud chcete přijímat hodnoty parametrů prostřednictvím adresy URL koncového bodu, máte tyto možnosti:

  • Přijměte hodnoty prostřednictvím parametrů GET nebo parametrů adresy URL.

    Tyto hodnoty se předávají jako páry name-value v adrese URL koncového bodu. Pro tuto možnost musíte použít metodu GET v triggeru požadavku. V následné akci můžete získat hodnoty parametrů jako výstupy triggeru triggerOutputs() pomocí funkce ve výrazu.

  • Přijměte hodnoty prostřednictvím relativní cesty pro parametry v triggeru požadavku.

    Tyto hodnoty se předávají relativní cestou v adrese URL koncového bodu. Musíte také explicitně vybrat metodu , kterou trigger očekává. V následné akci můžete získat hodnoty parametrů jako výstupy triggeru tak, že na tyto výstupy přímo odkazujete.

Přijetí hodnot prostřednictvím parametrů GET

  1. V triggeru Požadavku otevřete rozšířené parametry, přidejte do triggeru vlastnost Method a vyberte metodu GET .

    Další informace naleznete v tématu Výběr očekávané metody požadavku.

  2. V návrháři podle těchto obecných kroků přidejte akci, do které chcete hodnotu parametru použít.

    V tomto příkladu vyberte akci s názvem Odpověď.

  3. Pokud chcete vytvořit triggerOutputs() výraz, který načte hodnotu parametru, postupujte takto:

    1. V akci Odpověď vyberte uvnitř vlastnosti Tělo , aby se zobrazily možnosti dynamického obsahu (ikona blesku) a editoru výrazů (ikona vzorce). Výběrem ikony vzorce otevřete editor výrazů.

    2. Do pole výrazu zadejte následující výraz, nahraďte parameter-name názvem parametru a vyberte OK.

      triggerOutputs()['queries']['parameter-name']

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

      Ve vlastnosti Body se výraz přeloží na triggerOutputs() token.

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

      Pokud pracovní postup uložíte, přejdete od návrháře a vrátíte se do návrháře, token zobrazí zadaný název parametru, například:

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

      V zobrazení kódu se vlastnost Body zobrazí v definici akce Response následujícím způsobem:

      "body": "@{triggerOutputs()['queries']['parameter-name']}",

      Předpokládejme například, že chcete předat hodnotu parametru s názvem postalCode. Vlastnost Body určuje řetězec s Postal Code: koncovou mezerou následovanou odpovídajícím výrazem:

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

Otestování volatelného koncového bodu

  1. Z triggeru požadavku zkopírujte adresu URL pracovního postupu a vložte adresu URL do jiného okna prohlížeče. Do adresy URL přidejte název a hodnotu parametru do adresy URL v následujícím formátu a stiskněte Enter.

    ...invoke/{parameter-name}/{parameter-value}?api-version=2022-05-01...

    Příklad:

    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}

    Prohlížeč vrátí odpověď s tímto textem: Postal Code: 123456

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

Poznámka:

Pokud chcete do identifikátoru URI zahrnout symbol hash nebo libra (#), použijte místo toho tuto zakódovanou verzi: %25%23

Přijetí hodnot přes relativní cestu

  1. V triggeru Požadavku otevřete seznam rozšířených parametrů a vyberte Relativní cesta, která tuto vlastnost přidá do triggeru.

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

  2. Ve vlastnosti Relativní cesta zadejte relativní cestu pro parametr ve schématu JSON, který má adresa URL přijmout, /address/{postalCode}například .

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

  3. Pod triggerem požadavku přidejte akci, do které chcete hodnotu parametru použít, podle těchto obecných kroků.

    V tomto příkladu přidejte akci Odpověď .

  4. Do vlastnosti Text akce Response zahrňte token, který představuje parametr, který jste zadali v relativní cestě triggeru.

    Předpokládejme například, že chcete, aby akce Odpověď vrátila Postal Code: {postalCode}.

    1. Ve vlastnosti Text zadejte Postal Code: koncovou mezeru. Umístěte kurzor do textového pole tak, aby zůstal otevřený seznam dynamického obsahu.

    2. V seznamu dynamického obsahu v části Při přijetí požadavku HTTP vyberte výstup triggeru Parametry cesty POSTALCode .

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

      Vlastnost Body teď obsahuje vybraný parametr:

      Screenshot shows Standard workflow and example response body with parameter.

  5. Uložte pracovní postup.

    V triggeru požadavku se adresa URL zpětného volání aktualizuje a teď obsahuje relativní cestu, například:

    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. Pokud chcete otestovat koncový bod umožňující volání, zkopírujte aktualizovanou adresu URL zpětného volání z triggeru požadavku, vložte adresu URL do jiného okna prohlížeče, nahraďte %7BpostalCode%7D ji adresou URL 123456a stiskněte Enter.

    Prohlížeč vrátí odpověď s tímto textem: Postal Code: 123456

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

Poznámka:

Pokud chcete do identifikátoru URI zahrnout symbol hash nebo libra (#), použijte místo toho tuto zakódovanou verzi: %25%23

Volání pracovního postupu prostřednictvím adresy URL koncového bodu

Po vytvoření koncového bodu můžete pracovní postup aktivovat odesláním požadavku HTTPS na úplnou adresu URL koncového bodu. Pracovní postupy Azure Logic Apps mají integrovanou podporu koncových bodů přímého přístupu.

Tokeny generované ze schématu

Když do triggeru požadavku zadáte schéma JSON, návrhář pracovního postupu vygeneruje tokeny pro vlastnosti v daném schématu. Tyto tokeny pak můžete použít k předávání dat prostřednictvím pracovního postupu.

Pokud například do schématu JSON přidáte další vlastnosti, "suite"jsou tokeny pro tyto vlastnosti k dispozici v pozdějších krocích pracovního postupu. Tady je kompletní schéma JSON:

{
   "type": "object",
   "properties": {
      "address": {
         "type": "object",
         "properties": {
            "streetNumber": {
               "type": "string"
            },
            "streetName": {
               "type": "string"
            },
            "suite": {
               "type": "string"
            },
            "town": {
               "type": "string"
            },
            "postalCode": {
               "type": "string"
            }
         }
      }
   }
}

Volání jiných pracovních postupů

Další pracovní postupy, které mohou přijímat požadavky, můžete volat tak, že je vnořujete do aktuálního pracovního postupu. Chcete-li volat tyto pracovní postupy, postupujte takto:

  1. V návrháři pomocí těchto obecných kroků přidejte akci Operace pracovního postupu s názvem Vyvolat pracovní postup v této aplikaci pracovního postupu.

    Seznam Název pracovního postupu zobrazuje způsobilé pracovní postupy, které můžete vybrat.

  2. V seznamu Název pracovního postupu vyberte pracovní postup, který chcete volat, například:

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

Odkazovat na obsah z příchozího požadavku

Pokud je application/jsontyp obsahu příchozího požadavku, můžete odkazovat na vlastnosti příchozího požadavku. Jinak se tento obsah považuje za jednu binární jednotku, kterou můžete předat jiným rozhraním API. Pokud chcete odkazovat na tento obsah v pracovním postupu aplikace logiky, musíte nejprve tento obsah převést.

Pokud například předáváte obsah, který má application/xml typ, můžete výraz použít @xpath() k extrakci XPath nebo použít @json() výraz pro převod XML na JSON. Přečtěte si další informace o práci s podporovanými typy obsahu.

K získání výstupu z příchozího požadavku můžete použít @triggerOutputs výraz. Předpokládejme například, že máte výstup, který vypadá jako v tomto příkladu:

{
   "headers": {
      "content-type" : "application/json"
   },
   "body": {
      "myProperty" : "property value"
   }
}

Pokud chcete získat přístup konkrétně k body vlastnosti, můžete výraz použít @triggerBody() jako zástupce.

Reakce na žádosti

Někdy chcete odpovědět na určité žádosti, které aktivují váš pracovní postup vrácením obsahu volajícímu. K vytvoření stavového kódu, hlavičky a textu odpovědi použijte akci Odpověď. Tato akce se může zobrazit kdekoli v pracovním postupu, nejen na konci pracovního postupu. Pokud váš pracovní postup neobsahuje akci Odpovědi, koncový bod okamžitě odpoví stavem 202 Přijato.

Aby původní volající úspěšně získal odpověď, musí se všechny požadované kroky pro odpověď dokončit v rámci limitu časového limitu požadavku, pokud se aktivovaný pracovní postup nevolá jako vnořený pracovní postup. Pokud v rámci tohoto limitu není vrácena žádná odpověď, vyprší časový limit příchozího požadavku a obdrží odpověď časového limitu klienta 408.

U vnořených pracovních postupů bude nadřazený pracovní postup dál čekat na odpověď, dokud se nedokončí všechny kroky bez ohledu na to, kolik času je potřeba.

Vytvoření odpovědi

V textu odpovědi můžete zahrnout více záhlaví a libovolný typ obsahu. Například následující hlavička odpovědi určuje, že typ obsahu odpovědi je application/json a že tělo obsahuje hodnoty pro vlastnosti town a postalCode na základě schématu JSON popsaného výše v tomto tématu pro trigger požadavku.

Screenshot shows Response action and response content type.

Odpovědi mají tyto vlastnosti:

Vlastnost (zobrazení) Vlastnost (JSON) Popis
Stavový kód statusCode Stavový kód HTTPS, který se použije v odpovědi na příchozí požadavek. Tento kód může být jakýkoli platný stavový kód začínající na 2xx, 4xx nebo 5xx. Stavové kódy 3xx ale nejsou povolené.
Záhlaví headers Jedna nebo více hlaviček, která se mají zahrnout do odpovědi
Text body Základní objekt, který může být řetězec, objekt JSON nebo dokonce binární obsah odkazovaný z předchozího kroku

Pokud chcete zobrazit definici JSON pro akci Odpověď a úplnou definici JSON pracovního postupu, změňte ji ze zobrazení návrháře na zobrazení kódu.

"Response": {
   "type": "Response",
   "kind": "http",
   "inputs": {
      "body": {
         "postalCode": "@triggerBody()?['address']?['postalCode']",
         "town": "@triggerBody()?['address']?['town']"
      },
      "headers": {
         "content-type": "application/json"
      },
      "statusCode": 200
   },
   "runAfter": {}
}

Otázky a odpovědi

Otázka: Co zabezpečení adresy URL pro příchozí volání?

A: Azure bezpečně generuje adresy URL zpětného volání aplikace logiky pomocí sdíleného přístupového podpisu (SAS). Tento podpis prochází jako parametr dotazu a musí být ověřen před spuštěním pracovního postupu. Azure vygeneruje podpis pomocí jedinečné kombinace tajného klíče pro aplikaci logiky, názvu triggeru a provedené operace. Pokud tedy někdo nemá přístup k tajnému klíči aplikace logiky, nemůže vygenerovat platný podpis.

Důležité

V produkčních a vyšších systémech zabezpečení důrazně doporučujeme, abyste pracovní postup volali přímo z prohlížeče z těchto důvodů:

  • Sdílený přístupový klíč se zobrazí v adrese URL.
  • Zásady obsahu zabezpečení nemůžete spravovat kvůli sdíleným doménám napříč zákazníky Azure Logic Apps.

Další informace o zabezpečení, autorizaci a šifrování příchozích volání do vašeho pracovního postupu, jako je protokol TLS (Transport Layer Security), dříve označovaný jako SSL (Secure Sockets Layer), Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), zveřejnění pracovního postupu aplikace logiky ve službě Azure API Management nebo omezení IP adres, které pocházejí z příchozích volání, najdete v tématu Zabezpečený přístup a data – Přístup pro příchozí volání triggerů založených na požadavcích.

Otázka: Můžu dále konfigurovat volatelné koncové body?

Ano, koncové body HTTPS podporují pokročilejší konfiguraci prostřednictvím služby Azure API Management. Tato služba také nabízí možnost konzistentně spravovat všechna vaše rozhraní API, včetně aplikací logiky, nastavení vlastních názvů domén, použití dalších metod ověřování a dalších, například:

Další kroky