Külső HTTP- vagy HTTPS-végpontok meghívása munkafolyamatokból az Azure Logic Appsben

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

Egyes forgatókönyvek esetében előfordulhat, hogy létre kell hoznia egy logikai alkalmazás munkafolyamatát, amely kimenő kéréseket küld más szolgáltatások vagy rendszerek végpontjainak HTTP-n vagy HTTPS-en keresztül. Tegyük fel például, hogy egy szolgáltatásvégpontot szeretne figyelni a webhelye számára úgy, hogy a végpontot egy adott ütemezés szerint ellenőrzi. Ha egy adott esemény történik azon a végponton, például a webhely leáll, az esemény elindítja a munkafolyamatot, és futtatja a munkafolyamat műveleteit.

Feljegyzés

Ha olyan munkafolyamatot szeretne létrehozni, amely fogad és válaszol a bejövő HTTPS-hívásokra, olvassa el az Azure Logic Apps HTTPS-végpontjaival meghívható, aktiválható vagy beágyazott munkafolyamatok létrehozása, valamint a beépített kérelem-eseményindító és válaszművelet című témakört.

Ez az útmutató bemutatja, hogyan használhatja a HTTP-eseményindítót és a HTTP-műveletet, hogy a munkafolyamat kimenő hívásokat küldjön más szolgáltatásoknak és rendszereknek, például:

  • Ha egy végpontot ismétlődő ütemezés szerint szeretne ellenőrizni vagy lekérdezni , adja hozzá a HTTP-eseményindítót a munkafolyamat első lépéseként. Minden alkalommal, amikor az eseményindító ellenőrzi a végpontot, az eseményindító meghív vagy kérést küld a végpontnak. A végpont válasza határozza meg, hogy fut-e a munkafolyamat. Az eseményindító átadja a végpont válaszából származó tartalmat a munkafolyamat műveleteinek.

  • Ha a munkafolyamat bármely más pontjáról szeretne végpontot meghívni, adja hozzá a HTTP-műveletet. A végpont válasza határozza meg, hogyan futnak a munkafolyamat hátralévő műveletei.

Előfeltételek

  • Azure-fiók és -előfizetés. Ha nem rendelkezik Azure-előfizetéssel, regisztráljon egy ingyenes Azure-fiókra.

  • A meghívni kívánt célvégpont URL-címe

  • A logikai alkalmazás munkafolyamata, ahonnan a célvégpontot meg szeretné hívni. A HTTP-eseményindítóval való kezdéshez üres munkafolyamatra van szükség. A HTTP-művelet használatához indítsa el a munkafolyamatot a kívánt eseményindítóval. Ez a példa első lépésként a HTTP-eseményindítót használja.

Csatlakozás or műszaki referencia

Az eseményindító és a műveleti paraméterekkel kapcsolatos technikai információkért tekintse meg a következő szakaszokat:

HTTP-eseményindító hozzáadása

Ez a beépített eseményindító HTTP-hívást indít egy végpont megadott URL-címére, és választ ad vissza.

  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 nevű beépített eseményindítót a munkafolyamathoz.

    Ez a példa átnevezi az eseményindítót HTTP-eseményindítóra – Meghívja a végpont URL-címét , hogy az eseményindítónak leíróbb neve legyen. A későbbi példa egy HTTP-műveletet is hozzáad, és a munkafolyamat műveletneveinek egyedinek kell lenniük.

  3. Adja meg a célvégpont hívásában szerepeltetni kívánt HTTP-triggerparaméterek értékeit. Állítsa be az ismétlődést, hogy az eseményindító milyen gyakran ellenőrizze a célvégpontot.

    Ha a Nincs típustól eltérő hitelesítési típust választ, a hitelesítési beállítások a kijelöléstől függően eltérnek. A HTTP-hez elérhető hitelesítési típusokkal kapcsolatos további információkért tekintse meg az alábbi témaköröket:

  4. További elérhető paraméterek hozzáadásához nyissa meg a Speciális paraméterek listát, és válassza ki a kívánt paramétereket.

  5. Adjon hozzá minden más műveletet, amelyet az eseményindító aktiválásakor futtatni szeretne.

  6. Ha végzett, mentse a munkafolyamatot. A tervező eszköztárán válassza a Mentés lehetőséget.

HTTP-művelet hozzáadása

Ez a beépített művelet HTTP-hívást indít egy végpont megadott URL-címére, és választ ad vissza.

  1. Az Azure Portalon nyissa meg a Consumption logikai alkalmazást és a munkafolyamatot a tervezőben.

    Ez a példa az előző szakaszban hozzáadott HTTP-eseményindítót használja első lépésként.

  2. Az alábbi általános lépéseket követve adja hozzá a HTTP nevű beépített műveletet a munkafolyamathoz.

    Ez a példa HTTP-műveletre átnevezi a műveletet – Meghívja a végpont URL-címét , hogy a lépésnek leíróbb neve legyen. Emellett a munkafolyamat műveletneveinek egyedinek kell lenniük.

  3. Adja meg a célvégpont hívásában felvenni kívánt HTTP-műveleti paraméterek értékeit.

    Ha a Nincs típustól eltérő hitelesítési típust választ, a hitelesítési beállítások a kijelöléstől függően eltérnek. A HTTP-hez elérhető hitelesítési típusokkal kapcsolatos további információkért tekintse meg az alábbi témaköröket:

  4. További elérhető paraméterek hozzáadásához nyissa meg a Speciális paraméterek listát, és válassza ki a kívánt paramétereket.

  5. Ha végzett, mentse a munkafolyamatot. A tervező eszköztárán válassza a Mentés lehetőséget.

Trigger- és műveletkimenetek

Az alábbiakban további információt talál a HTTP-eseményindítók vagy -műveletek kimeneteiről, amelyek a következő információkat adják vissza:

Tulajdonság Típus Leírás
headers JSON-objektum A kérelem fejlécei
body JSON-objektum A kérelem törzstartalmat tartalmazó objektum
status code Egész A kérés állapotkódja
Állapotkód Leírás
200 OK
202 Elfogadva
400 Hibás kérés
401 Nem engedélyezett
403 Forbidden
404 Nem található
500 Belső kiszolgálóhiba. Ismeretlen hiba történt.

Kimenő hívások URL-biztonsága

A munkafolyamatból kimenő hívások titkosításáról, biztonságáról és engedélyezéséről, például a Transport Layer Securityről (TLS), korábbi nevén Secure Sockets Layerről (SSL), önaláírt tanúsítványokról vagy a Microsoft Entra ID Open Authenticationről (Microsoft Entra ID OAuth) szóló információkért lásd: Biztonságos hozzáférés és adatok – Hozzáférés más szolgáltatásokba és rendszerekbe irányuló kimenő hívásokhoz.

Hitelesítés egybérlős környezethez

Ha standard logikaialkalmazás-erőforrással rendelkezik az egybérlős Azure Logic Appsben, és HTTP-műveletet szeretne használni az alábbi hitelesítési típusok bármelyikével, mindenképpen végezze el a megfelelő hitelesítési típushoz szükséges további beállítási lépéseket. Ellenkező esetben a hívás meghiúsul.

TLS/SSL-tanúsítványhitelesítés

  1. A logikaialkalmazás-erőforrás alkalmazásbeállításaiban adja hozzá vagy frissítse az alkalmazásbeállítást. WEBSITE_LOAD_ROOT_CERTIFICATES

  2. A beállítási értékhez adja meg a TLS/SSL-tanúsítvány ujjlenyomatát a megbízható főtanúsítványként.

    "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS/SSL-certificate>"

Ha például a Visual Studio Code-ban dolgozik, kövesse az alábbi lépéseket:

  1. Nyissa meg a logikaialkalmazás-projekt local.settings.json fájlját.

  2. Values A JSON-objektumban adja hozzá vagy frissítse a WEBSITE_LOAD_ROOT_CERTIFICATES beállítást:

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "AzureWebJobsStorage": "UseDevelopmentStorage=true",
          "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS/SSL-certificate>",
          <...>
       }
    }
    

    Feljegyzés

    Az ujjlenyomat megkereséséhez kövesse az alábbi lépéseket:

    1. A logikai alkalmazás erőforrásmenüjének Gépház területén válassza a TLS/SSL-beállítások>privát kulcstanúsítványok (.pfx) vagy nyilvános kulcsú tanúsítványok (.cer) lehetőséget.

    2. Keresse meg a használni kívánt tanúsítványt, és másolja ki az ujjlenyomatot.

    További információ: Az ujjlenyomat megkeresése – Azure-alkalmazás szolgáltatás.

További információkért tekintse át a következő dokumentációt:

Ügyféltanúsítvány vagy Microsoft Entra ID OAuth "Tanúsítvány" típusú hitelesítő adatok hitelesítésével

  1. A logikaialkalmazás-erőforrás alkalmazásbeállításaiban adja hozzá vagy frissítse az alkalmazásbeállítást. WEBSITE_LOAD_USER_PROFILE

  2. A beállítási értékhez adja meg a következőt 1: .

    "WEBSITE_LOAD_USER_PROFILE": "1"

Ha például a Visual Studio Code-ban dolgozik, kövesse az alábbi lépéseket:

  1. Nyissa meg a logikaialkalmazás-projekt local.settings.json fájlját.

  2. Values A JSON-objektumban adja hozzá vagy frissítse a WEBSITE_LOAD_USER_PROFILE beállítást:

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "AzureWebJobsStorage": "UseDevelopmentStorage=true",
          "WEBSITE_LOAD_USER_PROFILE": "1",
          <...>
       }
    }
    

További információkért tekintse át a következő dokumentációt:

Többrészes/űrlap-adattípusú tartalom

A HTTP-kérelmekbe beírt tartalom multipart/form-data kezeléséhez hozzáadhat egy JSON-objektumot, amely tartalmazza a $content-type HTTP-kérés törzsét és $multipart attribútumait ezzel a formátummal.

"body": {
   "$content-type": "multipart/form-data",
   "$multipart": [
      {
         "body": "<output-from-trigger-or-previous-action>",
         "headers": {
            "Content-Disposition": "form-data; name=file; filename=<file-name>"
         }
      }
   ]
}

Tegyük fel például, hogy van egy munkafolyamata, amely http POST-kérelmet küld egy Excel-fájlhoz egy webhelyre a webhely API-jával, amely támogatja a típust multipart/form-data . Az alábbi minta bemutatja, hogyan jelenhet meg ez a művelet:

Standard munkafolyamat

Képernyőkép a Standard munkafolyamatról HTTP-művelettel és többrészes űrlapadatokkal.

Használati munkafolyamat

Képernyőkép a Használat munkafolyamatról HTTP-művelettel és többrészes űrlapadatokkal.

Az alábbi példa a HTTP-művelet JSON-definícióját mutatja be a mögöttes munkafolyamat-definícióban:

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

Tartalom alkalmazással/x-www-form-urlencoded típussal

Ha egy HTTP-kérés törzsében urlencoded formátumú adatokat szeretne megadni, meg kell adnia, hogy az adatok tartalomtípussal rendelkeznek-e application/x-www-form-urlencoded . A HTTP-eseményindítóban vagy műveletben adja hozzá a fejlécet content-type . Állítsa a fejléc értékét a következőre application/x-www-form-urlencoded: .

Tegyük fel például, hogy van egy logikai alkalmazása, amely HTTP POST-kérelmet küld egy webhelyre, amely támogatja a típust application/x-www-form-urlencoded . A művelet a következőképpen nézhet ki:

Standard munkafolyamat

Képernyőkép a Standard munkafolyamatról HTTP-kéréssel és tartalomtípus-fejléckészlettel az application/x-www-form-urlencoded értékre.

Használati munkafolyamat

Képernyőkép a Használat munkafolyamatról HTTP-kéréssel és tartalomtípus-fejléckészlettel az application/x-www-form-urlencoded értékre.

Aszinkron kérés-válasz viselkedése

A több- és egybérlős Azure Logic Apps állapotalapú munkafolyamatai esetében az összes HTTP-alapú művelet alapértelmezett viselkedésként a szabványos aszinkron műveleti mintát követi. Ez a minta azt határozza meg, hogy miután egy HTTP-művelet meghív vagy kérést küld egy végpontnak, szolgáltatásnak, rendszernek vagy API-nak, a fogadó azonnal "202 ACCEPTED" választ ad vissza. Ez a kód megerősíti, hogy a fogadó elfogadta a kérést, de még nem fejezte be a feldolgozást. A válasz tartalmazhat egy location fejlécet, amely megadja az URI-t és egy frissítési azonosítót, amellyel a hívó lekérdezheti vagy ellenőrizheti az aszinkron kérés állapotát, amíg a fogadó le nem állítja a feldolgozást, és visszaad egy "200 OK" sikeres választ vagy más, nem 202-től eltérő választ. A hívónak azonban nem kell megvárnia a kérés feldolgozásának befejezését, és továbbra is futtathatja a következő műveletet. További információ: Aszinkron mikroszolgáltatás-integráció kényszeríti a mikroszolgáltatások autonómiáját.

Az egybérlős Azure Logic Apps állapot nélküli munkafolyamatai esetében a HTTP-alapú műveletek nem használják az aszinkron műveleti mintát. Ehelyett csak szinkron módon futnak, a "202 ELFOGADVA" választ adják vissza, és folytassa a munkafolyamat végrehajtásának következő lépésével. Ha a válasz fejlécet location tartalmaz, egy állapot nélküli munkafolyamat nem kérdezi le a megadott URI-t az állapot ellenőrzéséhez. A szabványos aszinkron műveleti minta követéséhez használjon inkább állapotalapú munkafolyamatot.

  • A HTTP-művelet mögöttes JavaScript Object Notation (JSON) definíciója implicit módon követi az aszinkron műveleti mintát.

  • A HTTP-művelet, de az eseményindító nem aszinkron mintabeállítással rendelkezik, amely alapértelmezés szerint engedélyezve van. Ez a beállítás azt határozza meg, hogy a hívó nem várja meg a feldolgozás befejezését, és továbbléphet a következő műveletre, de a feldolgozás befejezéséig folytatja az állapot ellenőrzését. Ha le van tiltva, ez a beállítás azt határozza meg, hogy a hívó megvárja a feldolgozás befejezését, mielőtt továbblépne a következő műveletre.

    Az Aszinkron minta beállítás megkereséséhez kövesse az alábbi lépéseket attól függően, hogy standard vagy használati munkafolyamattal rendelkezik-e:

    Standard munkafolyamat*

    1. A munkafolyamat-tervezőben válassza ki a HTTP-műveletet. A megnyíló információs panelen válassza a Gépház.

    2. A Hálózatkezelés területen keresse meg az Aszinkron minta beállítást.

    Használati munkafolyamat

    1. A munkafolyamat-tervezőben a HTTP-művelet címsorában válassza a három pont (...) gombot, amely megnyitja a művelet beállításait.

    2. Keresse meg az Aszinkron minta beállítást.

Aszinkron műveletek letiltása

Előfordulhat, hogy bizonyos helyzetekben le szeretné tiltani a HTTP-művelet aszinkron viselkedését, például a következő esetekben:

Az Aszinkron minta beállítás kikapcsolása

  1. A munkafolyamat-tervezőben válassza ki a HTTP-műveletet, majd a megnyíló információs panelen válassza a Gépház.

  2. A Hálózatkezelés területen keresse meg az Aszinkron minta beállítást. Ha engedélyezve van, kapcsolja ki a beállítást.

Aszinkron minta letiltása a művelet JSON-definíciójában

A HTTP-művelet mögöttes JSON-definíciójában adja hozzá a "DisableAsyncPattern" műveleti beállítást a művelet definíciójához, hogy a művelet inkább a szinkron műveleti mintát kövesse. További információ: Műveletek futtatása szinkron műveleti mintában.

A hosszan futó tevékenységek HTTP-időtúllépéseinek elkerülése

A HTTP-kérések időtúllépési korlátot szabnak. Ha hosszú ideig futó HTTP-művelete van, amely a korlát miatt túllépi az időkorlátot, az alábbi lehetőségek közül választhat:

  • Tiltsa le a HTTP-művelet aszinkron műveleti mintáját , hogy a művelet ne kérdezhesse le vagy ellenőrizze a kérés állapotát. Ehelyett a művelet megvárja, amíg a fogadó válaszol az állapottal és az eredményekkel, miután a kérés feldolgozása befejeződött.

  • Cserélje le a HTTP-műveletet a HTTP Webhook műveletre, amely megvárja, amíg a fogadó válaszol az állapotra és az eredményekre a kérés feldolgozása után.

Az újrapróbálkozási kísérletek közötti időköz beállítása az Újrapróbálkozás után fejléccel

Az újrapróbálkozási kísérletek közötti másodpercek számának megadásához hozzáadhatja a Retry-After fejlécet a HTTP-művelet válaszához. Ha például a célvégpont visszaadja az 429 - Too many requests állapotkódot, megadhatja az újrapróbálkozások közötti hosszabb időközt. A Retry-After fejléc az 202 - Accepted állapotkóddal is működik.

Az alábbi példában a HTTP-művelet válasza látható, amely a következőket tartalmazza Retry-After:

{
    "statusCode": 429,
    "headers": {
        "Retry-After": "300"
    }
}

Lapozás támogatása

Néha a célszolgáltatás úgy válaszol, hogy egyszerre egy oldalon adja vissza az eredményeket. Ha a válasz a következő oldalt adja meg a nextLink vagy @odata.nextLinktulajdonsággal, bekapcsolhatja a Lapozás beállítást a HTTP-műveletben. Ez a beállítás azt eredményezi, hogy a HTTP-művelet automatikusan követi ezeket a hivatkozásokat, és lekéri a következő oldalt. Ha azonban a válasz a következő lapot adja meg bármely más címkével, előfordulhat, hogy hurkot kell hozzáadnia a munkafolyamathoz. Kövesse ezt a hurkot, és kérje le manuálisan az egyes lapokat, amíg a címke null értékű.

Helyfejlécek ellenőrzésének letiltása

Egyes végpontok, szolgáltatások, rendszerek vagy API-k olyan választ adnak vissza 202 ACCEPTED , amely nem tartalmaz fejlécet location . Ha szeretné elkerülni, hogy a HTTP-művelet folyamatosan ellenőrizze a kérés állapotát, ha a location fejléc nem létezik, az alábbi lehetőségek közül választhat:

  • Tiltsa le a HTTP-művelet aszinkron műveleti mintáját , hogy a művelet ne kérdezhesse le vagy ellenőrizze a kérés állapotát. Ehelyett a művelet megvárja, amíg a fogadó válaszol az állapottal és az eredményekkel, miután a kérés feldolgozása befejeződött.

  • Cserélje le a HTTP-műveletet a HTTP Webhook műveletre, amely megvárja, amíg a fogadó válaszol az állapotra és az eredményekre a kérés feldolgozása után.

Ismert problémák

Kihagyott HTTP-fejlécek

Ha egy HTTP-eseményindító vagy művelet tartalmazza ezeket a fejléceket, az Azure Logic Apps figyelmeztetés vagy hiba nélkül eltávolítja ezeket a fejléceket a létrehozott kérelemüzenetből:

  • Accept-* fejlécek kivételével Accept-version
  • Allow
  • Content-*fejlécek kivételévelContent-DispositionContent-Encoding, amelyek a POST és Content-Typea PUT műveletek használatakor teljesülnek. Az Azure Logic Apps azonban a GET művelet használatakor elveti ezeket a fejléceket.
  • Cookiefejlécet, de az Azure Logic Apps a Cookie tulajdonság használatával megadott értékeket tiszteletben tartja.
  • Expires
  • Host
  • Last-Modified
  • Origin
  • Set-Cookie
  • Transfer-Encoding

Bár az Azure Logic Apps nem akadályozza meg, hogy HTTP-eseményindítót vagy műveletet használó logikai alkalmazásokat mentsen ezekkel a fejlécekkel, az Azure Logic Apps figyelmen kívül hagyja ezeket a fejléceket.

A válasz tartalma nem felel meg a várt tartalomtípusnak

A HTTP-művelet BadRequest-hibát okoz, ha a HTTP-művelet meghívja a háttér API-t az application/json fejléckészlettel Content-Type, de a háttérrendszer válasza valójában nem tartalmaz JSON formátumú tartalmat, ami nem felel meg a belső JSON-formátum érvényesítésének.

Következő lépések