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

A következőkre vonatkozik: Azure Logic Apps (Fogyasztás + 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.

Megjegyzé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 című témakört. A kérelem beépített eseményindítójának használatához tekintse meg az Azure Logic Apps munkafolyamatainak bejövő HTTPS-hívások fogadása és megválaszolása 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 ismétlődő ütemezés szerint szeretne ellenőrizni vagy lekérdezni egy végpontot, adja hozzá a HTTP nevű beépített 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 nevű beépített műveletet. A végpont válasza határozza meg, hogyan futnak a munkafolyamat hátralévő műveletei.

Előfeltételek

Összekötők műszaki referenciája

Az eseményindító és a műveleti paraméterekkel kapcsolatos technikai információkért tekintse meg a séma referencia-útmutatójának alábbi szakaszait:

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. Nyissa meg a Standard logikai alkalmazás erőforrását az Azure Portalon.

  2. Az erőforrás oldalsávjának Munkafolyamatok területén válassza a Munkafolyamatok lehetőséget, majd válassza ki az üres munkafolyamatot.

  3. A munkafolyamat oldalsáv menüjének Eszközök csoportjában válassza ki a tervezőt a munkafolyamat megnyitásához.

  4. Adja hozzá a http beépített eseményindítót a munkafolyamathoz az eseményindító hozzáadásának általános lépéseit követve.

    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.

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

  6. A Speciális paraméterek listájában válassza a Hitelesítés lehetőséget.

    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ípusokról az alábbi cikkekben talál további információt:

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

  8. 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 HTTPS- vagy HTTP-hívást küld a végpont megadott URL-címére, és válaszsal tér vissza.

  1. Nyissa meg a Standard logikai alkalmazás erőforrását az Azure Portalon.

  2. Az erőforrás oldalsávjának Munkafolyamatok területén válassza a Munkafolyamatok lehetőséget, majd válassza ki a munkafolyamatot.

  3. A munkafolyamat oldalsáv menüjének Eszközök csoportjában válassza ki a tervezőt a munkafolyamat megnyitásához.

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

  4. Adja hozzá a http beépített műveletet a munkafolyamathoz a művelet hozzáadásának általános lépéseit követve.

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

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

  6. A Speciális paraméterek listájában válassza a Hitelesítés lehetőséget.

    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ípusokról az alábbi cikkekben talál további információt:

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

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

Trigger- és műveletkimenetek

Egy HTTP-eseményindító vagy -művelet a következő adatokat adja ki:

Ingatlan 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 szám A kérés állapotkódja
Állapotkód Leírás
200 OKÉ
202 Elfogadott
400 Hibás kérés
401 Nem engedélyezett
403 hibakód Tiltott
404 Nem található
ötszáz Belső kiszolgálóhiba. Ismeretlen hiba történt.

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

A munkafolyamatból érkező 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), az önaláírt tanúsítványokról vagy a Microsoft Entra ID Open Authenticationről további információt az Accessben talál a más szolgáltatásokba és rendszerekbe irányuló kimenő hívásokhoz.

Hitelesítés egyfelhasználó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-tanúsítványhitelesítés

  1. A logikaialkalmazás-erőforrás alkalmazásbeállításaiban adja hozzá vagy frissítse a nevesított WEBSITE_LOAD_ROOT_CERTIFICATESalkalmazásbeállítást. Konkrét lépéseket az alkalmazásbeállítások kezelése – local.settings.jsoncímű témakörben talál.

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

    "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS-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-certificate>",
          <...>
       }
    }
    

Megjegyzés:

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

  • A logikai alkalmazás erőforrásmenüjének Beállítások területén válassza a Tanúsítványok lehetőséget.
  • Válassza a Saját tanúsítványok (.pfx) vagy a Nyilvános kulcsú tanúsítványok (.cer) lehetőséget.
  • 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 App Service.

További információ: Alkalmazásbeállítások kezelése – local.settings.json.

Ügyféltanúsítvány vagy Microsoft Entra ID OAuth tanúsítvány típusú hitelesítéssel

  1. A logikaialkalmazás-erőforrás alkalmazásbeállításaiban adja hozzá vagy frissítse a nevesított WEBSITE_LOAD_USER_PROFILEalkalmazásbeállítást. Konkrét lépésekért lásd: Alkalmazásbeállítások kezelése – local.settings.json

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

Ha az Azure Portalon dolgozik, nyissa meg a logikai alkalmazást. Az oldalsáv menü Beállítások területén válassza a Környezeti változók lehetőséget. Az Alkalmazásbeállítások területen adja hozzá vagy szerkessze a beállítást.

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

HTTP-kérelmekben a multipart/form-data típusú tartalom kezeléséhez hozzáadhat egy JSON-objektumot, amely a $content-type és $multipart attribútumokat tartalmazza, a HTTP-kérelem törzséhez 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:

Képernyőkép a 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"
}

Alkalmazott/x-www-form-urlencoded típusú tartalom

Ahhoz, hogy egy HTTP-kérés törzsében URL-kódolt adatokat adjunk meg, szükséges megadni, hogy az adatok application/x-www-form-urlencoded tartalomtípusúak. 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:

Képernyőkép, amely a munkafolyamatot mutatja, ahol a HTTP-kérés és a tartalomtípus fejléc be van állítva 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 visszaad egy 202 ACCEPTED választ. Ez a kód megerősíti, hogy a fogadó elfogadta a kérést, de még nem fejeződött be a feldolgozás. 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ó: Szinkron és aszinkron üzenetkezelés.

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, visszaadják a 202 ACCEPTED válasz as-is, és továbblépnek a munkafolyamat következő lépésére. Ha a válasz tartalmaz fejlécet location , az á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 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 mintabeállítás megkeresése:

    1. A munkafolyamat-tervezőben válassza ki a HTTP-műveletet .
    2. A megnyíló információs panelen válassza a Beállítások lehetőséget.
    3. A Hálózatkezelés területen keresse meg az Aszinkron mintabeá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:

Aszinkron mintabeállítás kikapcsolása

  1. A munkafolyamat-tervezőben válassza a HTTP-műveletet, majd a megnyíló információs panelen válassza a Beállítások lehetőséget.

  2. A Hálózatkezelés területen keresse meg az Aszinkron mintabeá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 a hosszú ideig futó HTTP-művelet a korlát miatt időkorlátot lép túl, 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 a Retry-After fejlécben

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ási funkció 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 nextLink vagy @odata.nextLink tulajdonsággal megadja a következő oldalt, akkor 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. A programozási ciklus kövesse az adott címkét, majd kérje le manuálisan az egyes lapokat, amíg a címke null értékűvé válik.

A 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ével, amelyek, kivéve Content-Disposition, Content-Encoding, és Content-Type, elfogadottak, amikor a POST és a PUT műveleteket használja. Az Azure Logic Apps azonban elveti ezeket a fejléceket, amikor a GET műveletet használja.
  • Cookie fejlécet, de az Azure Logic Apps minden megadott értéket elfogad, amit a Cookie tulajdonság használatával állítasz be.
  • 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 Content-Type fejléckészlettel, 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.