Https-végpontok használatával meghívható, aktiválható vagy beágyazott munkafolyamatok létrehozása az Azure Logic Appsben

A következőkre vonatkozik: Azure Logic Apps (Használat + Standard)

Bizonyos esetekben előfordulhat, hogy olyan logikai alkalmazás-munkafolyamatot kell létrehoznia, amely bejövő kéréseket fogadhat más szolgáltatásoktól vagy munkafolyamatoktól, vagy egy URL-címmel hívható munkafolyamatot. Ebben a feladatban egy natív szinkron HTTPS-végpontot tehet elérhetővé a munkafolyamaton, ha a következő kérésalapú triggertípusok bármelyikét használja:

Ez az útmutató bemutatja, hogyan hozhat létre hívható végpontot a munkafolyamathoz a Kérelem eseményindító hozzáadásával, majd a végpont meghívásával egy másik munkafolyamatból. Minden alapelv azonos a bejövő kérelmek fogadására képes többi kérelemalapú eseményindító-típusra.

Előfeltételek

  • Azure-fiók és -előfizetés. Ha még nincs előfizetése, regisztráljon egy ingyenes Azure-fiókra.

  • Egy logikai alkalmazás munkafolyamata, amelyben a kérelemalapú eseményindítót szeretné használni a hívható végpont létrehozásához. Egy üres munkafolyamattal vagy egy meglévő munkafolyamattal kezdheti, ahol lecserélheti az aktuális eseményindítót. Ez a példa egy üres munkafolyamattal kezdődik.

  • A létrehozott hívható végpont URL-címének teszteléséhez szüksége lesz egy olyan eszközre vagy alkalmazásra, mint a Postman.

Hívható végpont létrehozása

Attól függően, hogy Standard vagy Consumption logikai alkalmazás munkafolyamattal rendelkezik-e, kövesse a megfelelő lépéseket:

  1. Az Azure Portalon nyissa meg a Standard logikai alkalmazás erőforrását és az üres munkafolyamatot a tervezőben.

  2. Az alábbi általános lépéseket követve adja hozzá a HTTP-kérés érkezésekor elnevezett kérelemindítót.

  3. A Kérelem törzse JSON-séma mezőjében megadhat egy JSON-sémát, amely leírja az eseményindító által várt hasznos adatokat vagy adatokat.

    A tervező ezzel a sémával hoz létre triggerkimeneteket képviselő jogkivonatokat. Ezután egyszerűen hivatkozhat ezekre a kimenetekre a logikai alkalmazás munkafolyamatában. További információ a JSON-sémákból létrehozott jogkivonatokról.

    Ebben a példában adja meg a következő sémát:

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

    JSON-sémát is létrehozhat egy hasznos adatminta megadásával:

    1. A Kérelem eseményindítóban válassza a Minta hasznos adat használata séma létrehozásához lehetőséget.

    2. Az Enter vagy a illessze be a JSON-minta hasznos adatait tartalmazó mezőbe, írja be a minta hasznos adatait, például:

      {
         "address": {
            "streetNumber": "00000",
            "streetName": "AnyStreet",
            "town": "AnyTown",
            "postalCode": "11111-1111"
        }
      }
      
    3. Ha elkészült, válassza a Kész lehetőséget.

      A JSON-séma kéréstörzse párbeszédpanelen megjelenik a létrehozott séma.

  4. Mentse a munkafolyamatot.

    A HTTP POST URL-címmezőben megjelenik a létrehozott visszahívási URL- cím, amelyet más szolgáltatások a logikai alkalmazás munkafolyamatának meghívására és aktiválására használhatnak. Ez az URL-cím olyan lekérdezési paramétereket tartalmaz, amelyek egy közös hozzáférésű jogosultságkód (SAS) kulcsot adnak meg, amelyet a hitelesítéshez használnak.

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

  5. A visszahívási URL-cím másolásához az alábbi lehetőségek közül választhat:

    • A HTTP POST URL-címének jobb oldalán válassza az URL másolása (fájlok másolása ikon) lehetőséget.

    • Másolja a visszahívási URL-címet a munkafolyamat Áttekintés lapjáról.

      1. A munkafolyamat menüjében válassza az Áttekintés lehetőséget.

      2. Az Áttekintés lap Munkafolyamat URL-címe területén vigye az egérmutatót az URL-cím fölé, és válassza a Másolás vágólapra lehetőséget:

        Screenshot shows Standard workflow and Overview page with workflow URL.

  6. A Kérés eseményindítóhoz most használt visszahívási URL-cím teszteléséhez használjon egy eszközt vagy alkalmazást, például a Postmant, és küldje el a kérést a Kérés eseményindító által várt módszerrel.

    Ez a példa a POST következő módszert használja:

    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}

A várt kérési módszer kiválasztása

Alapértelmezés szerint a Kérés eseményindítója kérést POST vár. Megadhat azonban egy másik metódust, amelyet a hívónak használnia kell, de csak egyetlen metódust.

  1. A Kérelem eseményindítóban nyissa meg a Speciális paraméterek listát, és válassza a Metódus lehetőséget, amely hozzáadja ezt a tulajdonságot az eseményindítóhoz.

  2. A Metódus listában válassza ki azt a metódust, amelyet az eseményindítónak várnia kell. Vagy megadhat egy egyéni metódust is.

    Válassza ki például a GET metódust, hogy később tesztelhesse a végpont URL-címét.

Paraméterek továbbítása végpont URL-címén keresztül

Ha a végpont URL-címén keresztül szeretné elfogadni a paraméterértékeket, az alábbi lehetőségek közül választhat:

Értékek elfogadása GET-paraméterekkel

  1. A Kérelem eseményindítóban nyissa meg a Speciális paramétereket, adja hozzá a Metódus tulajdonságot az eseményindítóhoz, és válassza ki a GET metódust.

    További információ: A várt kérési módszer kiválasztása.

  2. A tervezőben az alábbi általános lépéseket követve adja hozzá azt a műveletet, amelyben a paraméterértéket használni szeretné.

    Ebben a példában válassza ki a Válasz nevű műveletet.

  3. A paraméter értékét lekérő kifejezés létrehozásához triggerOutputs() kövesse az alábbi lépéseket:

    1. A Válasz műveletben válassza ki a Törzs tulajdonságot, hogy megjelenjenek a dinamikus tartalom (villám ikon) és a kifejezésszerkesztő (képletikon) beállításai. A kifejezésszerkesztő megnyitásához válassza a képlet ikont.

    2. A kifejezésmezőbe írja be a következő kifejezést, cserélje le parameter-name a paraméter nevét, és válassza az OK gombot.

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

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

      A Body tulajdonságban a kifejezés feloldja a triggerOutputs() jogkivonatot.

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

      Ha menti a munkafolyamatot, navigál a tervezőtől, és visszatér a tervezőhöz, a jogkivonat a megadott paraméternevet jeleníti meg, például:

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

      Kódnézetben a Törzs tulajdonság a válaszművelet definíciójában az alábbiak szerint jelenik meg:

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

      Tegyük fel például, hogy egy névvel ellátott postalCodeparaméter értékét szeretné átadni. A Törzs tulajdonság a sztringet adja meg egy Postal Code: záró szóközzel, amelyet a megfelelő kifejezés követ:

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

A hívható végpont tesztelése

  1. A Kérelem eseményindítóból másolja ki a munkafolyamat URL-címét, és illessze be az URL-címet egy másik böngészőablakba. Az URL-címben adja hozzá a paraméter nevét és értékét az URL-címhez az alábbi formátumban, majd nyomja le az Enter billentyűt.

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

    Példa:

    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}

    A böngésző a következő szöveggel ad vissza választ: Postal Code: 123456

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

Feljegyzés

Ha a kivonatot vagy a font szimbólumot (#) szeretné szerepeltetni az URI-ban, használja inkább ezt a kódolt verziót: %25%23

Értékek elfogadása relatív útvonalon keresztül

  1. A Kérelem eseményindítóban nyissa meg a Speciális paraméterek listát, és válassza a Relatív elérési utat, amely hozzáadja ezt a tulajdonságot az eseményindítóhoz.

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

  2. A Relatív elérési út tulajdonságban adja meg annak a paraméternek a relatív elérési útját a JSON-sémában, amelyet az URL-címnek például el kell fogadnia/address/{postalCode}.

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

  3. A Kérelem eseményindító alatt az alábbi általános lépéseket követve adja hozzá azt a műveletet, amelyben a paraméter értékét használni szeretné.

    Ebben a példában adja hozzá a Válasz műveletet.

  4. A Válaszművelet Törzs tulajdonságában adja meg azt a jogkivonatot, amely az eseményindító relatív elérési útján megadott paramétert jelöli.

    Tegyük fel például, hogy a Válasz műveletet vissza szeretné adni Postal Code: {postalCode}.

    1. A Body tulajdonságban adjon meg Postal Code: egy záró szóközt. Tartsa a kurzort a szerkesztési mezőben, hogy a dinamikus tartalomlista nyitva maradjon.

    2. A dinamikus tartalomlistában a Http-kérés fogadása szakaszban válassza ki az Elérési út paraméterei postalCode-eseményindító kimenetét.

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

      A Törzs tulajdonság most már tartalmazza a kiválasztott paramétert:

      Screenshot shows Standard workflow and example response body with parameter.

  5. Mentse a munkafolyamatot.

    A Kérés eseményindítóban a visszahívási URL-cím frissül, és most már tartalmazza a relatív elérési utat, például:

    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. A hívható végpont teszteléséhez másolja a frissített visszahívási URL-címet a Kérés eseményindítóból, illessze be az URL-címet egy másik böngészőablakba, cserélje le %7BpostalCode%7D az URL-címet a következőre 123456, majd nyomja le az Enter billentyűt.

    A böngésző a következő szöveggel ad vissza választ: Postal Code: 123456

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

Feljegyzés

Ha a kivonatot vagy a font szimbólumot (#) szeretné szerepeltetni az URI-ban, használja inkább ezt a kódolt verziót: %25%23

Munkafolyamat meghívása végpont URL-címén keresztül

A végpont létrehozása után elindíthatja a munkafolyamatot egy HTTPS-kérés elküldésével a végpont teljes URL-címére. Az Azure Logic Apps-munkafolyamatok beépített támogatást nyújtanak a közvetlen hozzáférésű végpontokhoz.

Sémából létrehozott jogkivonatok

Amikor JSON-sémát ad meg a Kérelem eseményindítóban, a munkafolyamat-tervező jogkivonatokat hoz létre a séma tulajdonságaihoz. Ezután ezeket a jogkivonatokat használhatja az adatok munkafolyamaton keresztüli továbbításához.

Ha például további tulajdonságokat ad hozzá, például "suite"a JSON-sémához, akkor ezekhez a tulajdonságokhoz tartozó jogkivonatok a munkafolyamat későbbi lépéseiben használhatók. A teljes JSON-séma:

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

Más munkafolyamatok meghívása

Az aktuális munkafolyamatba ágyazva meghívhat más munkafolyamatokat is, amelyek kéréseket fogadhatnak. A munkafolyamatok meghívásához kövesse az alábbi lépéseket:

  1. A tervezőben kövesse az alábbi általános lépéseket a munkafolyamat-alkalmazás munkafolyamat-meghívása nevű munkafolyamat-műveleti műveletének hozzáadásához.

    A Munkafolyamat neve lista a kijelölendő munkafolyamatokat jeleníti meg.

  2. A Munkafolyamat neve listából válassza ki a meghívni kívánt munkafolyamatot, például:

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

Bejövő kérésből származó tartalom hivatkozása

Ha a bejövő kérelem tartalomtípusa az application/json, hivatkozhat a bejövő kérelem tulajdonságaira. Ellenkező esetben a tartalom egyetlen bináris egységként lesz kezelve, amelyet átadhat más API-knak. Ahhoz, hogy hivatkozzon erre a tartalomra a logikai alkalmazás munkafolyamatában, először konvertálnia kell azt.

Ha például olyan tartalmat ad át, amely típussal rendelkezikapplication/xml, a @xpath() kifejezéssel XPath-kinyerést hajthat végre, vagy használhatja a kifejezést az @json() XML JSON-ra való konvertálásához. További információ a támogatott tartalomtípusokról.

A bejövő kérés kimenetének lekéréséhez használhatja a @triggerOutputs kifejezést. Tegyük fel például, hogy az alábbi példához hasonló kimenettel rendelkezik:

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

Ha kifejezetten a tulajdonságot body szeretné elérni, használhatja a @triggerBody() kifejezést parancsikonként.

Válaszadás a kérelmekre

Néha olyan kérésekre szeretne válaszolni, amelyek elindítják a munkafolyamatot, ha tartalmat ad vissza a hívónak. A válasz állapotkódjának, fejlécének és törzsének létrehozásához használja a Válasz műveletet. Ez a művelet bárhol megjelenhet a munkafolyamatban, nem csak a munkafolyamat végén. Ha a munkafolyamat nem tartalmaz válaszműveletet, a végpont azonnal válaszol a 202 Elfogadva állapottal.

Ahhoz, hogy az eredeti hívó sikeresen megkapja a választ, a válaszhoz szükséges összes lépésnek a kérelem időtúllépési korlátja alatt kell befejeződnie, kivéve, ha az aktivált munkafolyamat beágyazott munkafolyamatként van meghívva. Ha nem ad vissza választ ezen a korláton belül, a bejövő kérés túllépi az időkorlátot, és megkapja a 408 ügyfél időtúllépési válaszát .

Beágyazott munkafolyamatok esetén a szülő munkafolyamat továbbra is várja a választ, amíg az összes lépés befejeződik, függetlenül attól, hogy mennyi időre van szükség.

A válasz létrehozása

A válasz törzsében több fejlécet és bármilyen típusú tartalmat is tartalmazhat. A következő válasz fejléce például azt határozza meg, hogy a válasz tartalomtípusa application/json , és hogy a törzs a kérelem eseményindítójához korábban ismertetett JSON-sémán alapuló értékeket town és postalCode tulajdonságokat tartalmaz.

Screenshot shows Response action and response content type.

A válaszok a következő tulajdonságokkal rendelkeznek:

Tulajdonság (megjelenítés) Tulajdonság (JSON) Leírás
Állapotkód statusCode A bejövő kérés válaszában használandó HTTPS-állapotkód. Ez a kód bármilyen érvényes állapotkód lehet, amely 2xx, 4xx vagy 5xx kezdetű. A 3xx állapotkódok azonban nem engedélyezettek.
Fejlécek headers Egy vagy több fejléc, amely szerepel a válaszban
Törzs body Egy törzsobjektum, amely lehet sztring, JSON-objektum vagy akár bináris tartalom is, amely egy előző lépésből származik

A válaszművelet JSON-definíciójának és a munkafolyamat teljes JSON-definíciójának megtekintéséhez módosítsa tervezői nézetről kódnézetre.

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

Kérdések és válaszok

K: Mi a helyzet a bejövő hívások URL-biztonságáról?

V: Az Azure biztonságosan létrehozza a logikai alkalmazások visszahívási URL-címeit a közös hozzáférésű jogosultságkód (SAS) használatával. Ez az aláírás lekérdezési paraméterként halad át, és a munkafolyamat futtatása előtt ellenőrizni kell. Az Azure a titkos kulcs logikai alkalmazásonkénti egyedi kombinációjával, az eseményindító nevével és az elvégzett művelettel hozza létre az aláírást. Tehát ha valaki nem fér hozzá a titkos logikai alkalmazás kulcsához, akkor nem tud érvényes aláírást létrehozni.

Fontos

Éles és magasabb biztonsági rendszerek esetén határozottan javasoljuk, hogy a munkafolyamatot közvetlenül a böngészőből hívja meg az alábbi okok miatt:

  • A megosztott hozzáférési kulcs megjelenik az URL-címben.
  • Az Azure Logic Apps-ügyfelek megosztott tartományai miatt nem kezelheti a biztonsági tartalomszabályzatokat.

További információ a munkafolyamatba irányuló bejövő hívások biztonságáról, engedélyezéséről és titkosításáról, például a Transport Layer Security (TLS), korábbi nevén Secure Sockets Layer (SSL), a Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth) szolgáltatásról, a logikai alkalmazás munkafolyamatának az Azure API Managementtel való közzétételéről vagy a bejövő hívásokból származó IP-címek korlátozásáról: Biztonságos hozzáférés és adatok – Hozzáférés a kérésalapú triggerekhez érkező hívásokhoz.

K: Konfigurálhatom a hívható végpontokat tovább?

Válasz: Igen, a HTTPS-végpontok az Azure API Management segítségével támogatják a fejlettebb konfigurációt. Ez a szolgáltatás emellett lehetővé teszi az összes API konzisztens kezelését, beleértve a logikai alkalmazásokat, egyéni tartománynevek beállítását, több hitelesítési módszer használatát és egyebeket, például:

Következő lépések