Skapa arbetsflöden som du kan anropa, utlösa eller kapsla med HTTPS-slutpunkter i Azure Logic Apps

Gäller för: Azure Logic Apps (Förbrukning + Standard)

Vissa scenarier kan kräva att du skapar ett arbetsflöde för logikappen som kan ta emot inkommande begäranden från andra tjänster eller arbetsflöden, eller ett arbetsflöde som du kan anropa med hjälp av en URL. För den här uppgiften kan du exponera en intern synkron HTTPS-slutpunkt i arbetsflödet när du använder någon av följande typer av begärandebaserade utlösare:

  • Begär
  • HTTP-webhook
  • Hanterade anslutningsutlösare som har typen Api Anslut ionWebhook och kan ta emot inkommande HTTPS-begäranden

Den här guiden visar hur du skapar en anropsbar slutpunkt för arbetsflödet genom att lägga till utlösaren Begäran och sedan anropa slutpunkten från ett annat arbetsflöde. Alla principer gäller på samma sätt för andra typer av begärandebaserade utlösare som kan ta emot inkommande begäranden.

Förutsättningar

  • Ett Azure-konto och prenumeration. Om du inte har någon prenumeration kan du registrera ett kostnadsfritt Azure-konto.

  • Ett arbetsflöde för logikappen där du vill använda den begärandebaserade utlösaren för att skapa den anropsbara slutpunkten. Du kan börja med antingen ett tomt arbetsflöde eller ett befintligt arbetsflöde där du kan ersätta den aktuella utlösaren. Det här exemplet börjar med ett tomt arbetsflöde.

  • Om du vill testa URL:en för den anropsbara slutpunkten som du skapar behöver du ett verktyg eller en app som Postman.

Skapa en anropsbar slutpunkt

Baserat på om du har ett arbetsflöde för standard- eller förbrukningslogikappen följer du motsvarande steg:

  1. Öppna standardlogikappresursen och det tomma arbetsflödet i designern i Azure-portalen.

  2. Följ de här allmänna stegen för att lägga till utlösaren Förfrågning med namnet När en HTTP-begäran tas emot.

  3. I rutan JSON-schema för begärandetext kan du också ange ett JSON-schema som beskriver nyttolasten eller data som du förväntar dig att utlösaren ska ta emot.

    Designern använder det här schemat för att generera token som representerar utlösarutdata. Du kan sedan enkelt referera till dessa utdata i logikappens arbetsflöde. Läs mer om token som genereras från JSON-scheman.

    I det här exemplet anger du följande schema:

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

    Du kan också generera ett JSON-schema genom att tillhandahålla en exempelnyttolast:

    1. I utlösaren Begäran väljer du Använd exempelnyttolast för att generera schema.

    2. I rutan Ange eller klistra in en JSON-exempelnyttolast anger du exempelnyttolasten, till exempel:

      {
         "address": {
            "streetNumber": "00000",
            "streetName": "AnyStreet",
            "town": "AnyTown",
            "postalCode": "11111-1111"
        }
      }
      
    3. När du är klar väljer du Klar.

      Rutan JSON-schema för begärandetext visar nu det genererade schemat.

  4. Spara arbetsflödet.

    Rutan HTTP POST-URL visar nu den genererade motringnings-URL:en som andra tjänster kan använda för att anropa och utlösa logikappens arbetsflöde. Den här URL:en innehåller frågeparametrar som anger en SAS-nyckel (Signatur för delad åtkomst), som används för autentisering.

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

  5. Om du vill kopiera motringnings-URL:en har du följande alternativ:

    • Till höger om rutan HTTP POST-URL väljer du Kopiera URL (ikonen kopiera filer).

    • Kopiera återanrops-URL:en från arbetsflödets översiktssida.

      1. Välj Översikt på arbetsflödesmenyn.

      2. På sidan Översikt under Arbetsflödes-URL flyttar du pekaren över URL:en och väljer Kopiera till Urklipp:

        Screenshot shows Standard workflow and Overview page with workflow URL.

  6. Om du vill testa den motringnings-URL som du nu har för utlösaren För begäran använder du ett verktyg eller en app som Postman och skickar begäran med den metod som begärandeutlösaren förväntar sig.

    I det POST här exemplet används metoden:

    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älj metod för förväntad begäran

Som standard förväntar sig utlösaren för begäran en POST begäran. Du kan dock ange en annan metod som anroparen måste använda, men bara en enda metod.

  1. I utlösaren Begäran öppnar du listan Avancerade parametrar och väljer Metod, som lägger till den här egenskapen i utlösaren.

  2. I listan Metod väljer du den metod som utlösaren ska förvänta sig i stället. Eller så kan du ange en anpassad metod.

    Välj till exempel GET-metoden så att du kan testa slutpunktens URL senare.

Skicka parametrar via slutpunkts-URL

När du vill acceptera parametervärden via slutpunktens URL har du följande alternativ:

  • Acceptera värden via GET-parametrar eller URL-parametrar.

    Dessa värden skickas som namn/värde-par i slutpunktens URL. För det här alternativet måste du använda GET-metoden i din begärandeutlösare. I en efterföljande åtgärd kan du hämta parametervärdena som utlösarutdata med hjälp triggerOutputs() av funktionen i ett uttryck.

  • Acceptera värden via en relativ sökväg för parametrar i din begärandeutlösare.

    Dessa värden skickas via en relativ sökväg i slutpunktens URL. Du måste också uttryckligen välja den metod som utlösaren förväntar sig. I en efterföljande åtgärd kan du hämta parametervärdena som utlösarutdata genom att referera till dessa utdata direkt.

Acceptera värden via GET-parametrar

  1. I utlösaren Begäran öppnar du de avancerade parametrarna, lägger till egenskapen Metod i utlösaren och väljer GET-metoden.

    Mer information finns i Välj metod för förväntad begäran.

  2. I designern följer du de här allmänna stegen för att lägga till åtgärden där du vill använda parametervärdet.

    I det här exemplet väljer du åtgärden Med namnet Svar.

  3. Följ dessa steg för att skapa uttrycket triggerOutputs() som hämtar parametervärdet:

    1. I åtgärden Svar väljer du inuti egenskapen Brödtext så att alternativen för dynamiskt innehåll (blixtikon) och uttrycksredigeraren (formelikonen) visas. Välj formelikonen för att öppna uttrycksredigeraren.

    2. I uttrycksrutan anger du följande uttryck, ersätter parameter-name med parameternamnet och väljer OK.

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

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

      I egenskapen Body (Brödtext ) matchas uttrycket med triggerOutputs() token.

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

      Om du sparar arbetsflödet, navigerar bort från designern och återgår till designern, visar token det parameternamn som du angav, till exempel:

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

      I kodvyn visas egenskapen Body (Brödtext ) i svarsåtgärdens definition enligt följande:

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

      Anta till exempel att du vill skicka ett värde för en parameter med namnet postalCode. Egenskapen Body anger strängen, Postal Code: med ett avslutande blanksteg, följt av motsvarande uttryck:

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

Testa din anropsbara slutpunkt

  1. Från utlösaren Förfrågning kopierar du arbetsflödes-URL:en och klistrar in URL:en i ett annat webbläsarfönster. I URL:en lägger du till parameternamnet och värdet i URL:en i följande format och trycker på Retur.

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

    Till exempel:

    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}

    Webbläsaren returnerar ett svar med den här texten: Postal Code: 123456

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

Kommentar

Om du vill inkludera hash- eller pundsymbolen (#) i URI:n använder du den här kodade versionen i stället: %25%23

Acceptera värden via en relativ sökväg

  1. I utlösaren Begäran öppnar du listan Avancerade parametrar och väljer Relativ sökväg, som lägger till den här egenskapen i utlösaren.

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

  2. I egenskapen Relativ sökväg anger du den relativa sökvägen för parametern i ditt JSON-schema som du vill att URL:en ska acceptera, till exempel /address/{postalCode}.

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

  3. Under utlösaren Förfrågning följer du de här allmänna stegen för att lägga till åtgärden där du vill använda parametervärdet.

    I det här exemplet lägger du till åtgärden Svar .

  4. I egenskapen Svarsåtgärdens brödtext inkluderar du den token som representerar parametern som du angav i utlösarens relativa sökväg.

    Anta till exempel att du vill att åtgärden Svar ska returnera Postal Code: {postalCode}.

    1. I egenskapen Body (Brödtext ) anger du Postal Code: med ett avslutande blanksteg. Håll markören i redigeringsrutan så att listan med dynamiskt innehåll förblir öppen.

    2. I listan med dynamiskt innehåll går du till avsnittet När en HTTP-begäran tas emot och väljer utdata för utlösaren Path Parameters postalCode .

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

      Egenskapen Body innehåller nu den valda parametern:

      Screenshot shows Standard workflow and example response body with parameter.

  5. Spara arbetsflödet.

    I utlösaren Begäran uppdateras motringnings-URL:en och innehåller nu den relativa sökvägen, till exempel:

    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. Om du vill testa den anropsbara slutpunkten kopierar du den uppdaterade motringnings-URL:en från utlösaren Begäran, klistrar in URL:en i ett annat webbläsarfönster, ersätter %7BpostalCode%7D i URL:en med 123456och trycker på Retur.

    Webbläsaren returnerar ett svar med den här texten: Postal Code: 123456

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

Kommentar

Om du vill inkludera hash- eller pundsymbolen (#) i URI:n använder du den här kodade versionen i stället: %25%23

Anropa arbetsflödet via slutpunkts-URL

När du har skapat slutpunkten kan du utlösa arbetsflödet genom att skicka en HTTPS-begäran till slutpunktens fullständiga URL. Azure Logic Apps-arbetsflöden har inbyggt stöd för direktåtkomstslutpunkter.

Token som genereras från schemat

När du anger ett JSON-schema i utlösaren Begäran genererar arbetsflödesdesignern token för egenskaperna i schemat. Du kan sedan använda dessa token för att skicka data via arbetsflödet.

Om du till exempel lägger till fler egenskaper, till exempel "suite", i ditt JSON-schema, är token för dessa egenskaper tillgängliga för dig att använda i de senare stegen för arbetsflödet. Här är det fullständiga JSON-schemat:

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

Anropa andra arbetsflöden

Du kan anropa andra arbetsflöden som kan ta emot begäranden genom att kapsla dem i det aktuella arbetsflödet. Följ dessa steg för att anropa dessa arbetsflöden:

  1. I designern följer du de här allmänna stegen för att lägga till åtgärden Arbetsflödesåtgärder med namnet Anropa ett arbetsflöde i den här arbetsflödesappen.

    Listan Arbetsflödesnamn visar de kvalificerade arbetsflöden som du kan välja.

  2. I listan Arbetsflödesnamn väljer du det arbetsflöde som du vill anropa, till exempel:

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

Referensinnehåll från en inkommande begäran

Om den inkommande begärans innehållstyp är application/jsonkan du referera till egenskaperna i den inkommande begäran. Annars behandlas det här innehållet som en enda binär enhet som du kan skicka till andra API:er. Om du vill referera till det här innehållet i logikappens arbetsflöde måste du först konvertera innehållet.

Om du till exempel skickar innehåll som har application/xml typen kan du använda @xpath() uttrycket för att utföra en XPath-extrahering eller använda @json() uttrycket för att konvertera XML till JSON. Läs mer om hur du arbetar med innehållstyper som stöds.

Du kan använda @triggerOutputs uttrycket för att hämta utdata från en inkommande begäran. Anta till exempel att du har utdata som ser ut så här:

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

Om du vill komma åt egenskapen kan body du använda uttrycket @triggerBody() som en genväg.

Besvara till begäranden

Ibland vill du svara på vissa begäranden som utlöser arbetsflödet genom att returnera innehåll till anroparen. Om du vill skapa statuskoden, rubriken och brödtexten för ditt svar använder du åtgärden Svar. Den här åtgärden kan visas var som helst i arbetsflödet, inte bara i slutet av arbetsflödet. Om arbetsflödet inte innehåller någon svarsåtgärd svarar slutpunkten omedelbart med statusen 202 Godkänd .

För att den ursprungliga anroparen ska få svaret måste alla nödvändiga steg för svaret slutföras inom tidsgränsen för begäran om inte det utlösta arbetsflödet anropas som ett kapslat arbetsflöde. Om inget svar returneras inom den här gränsen överskrider den inkommande begäran tidsgränsen och tar emot timeout-svaret för 408-klienten.

För kapslade arbetsflöden fortsätter det överordnade arbetsflödet att vänta på ett svar tills alla steg har slutförts, oavsett hur lång tid som krävs.

Konstruera svaret

I svarstexten kan du inkludera flera rubriker och valfri typ av innehåll. Följande svarsrubrik anger till exempel att svarets innehållstyp är application/json och att brödtexten innehåller värden för town egenskaperna och postalCode baserat på JSON-schemat som beskrevs tidigare i det här avsnittet för utlösaren Förfrågning.

Screenshot shows Response action and response content type.

Svaren har följande egenskaper:

Egenskap (visa) Egenskap (JSON) beskrivning
Statuskod statusCode HTTPS-statuskoden som ska användas i svaret för den inkommande begäran. Den här koden kan vara valfri giltig statuskod som börjar med 2xx, 4xx eller 5xx. 3xx-statuskoder är dock inte tillåtna.
Rubriker headers En eller flera rubriker som ska inkluderas i svaret
Brödtext body Ett brödtextobjekt som kan vara en sträng, ett JSON-objekt eller till och med binärt innehåll som refereras från ett tidigare steg

Om du vill visa JSON-definitionen för åtgärden Svar och arbetsflödets fullständiga JSON-definition ändrar du från designervy till kodvy.

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

Frågor och svar

F: Hur är det med URL-säkerhet för inkommande anrop?

S: Azure genererar url:er för återanrop till logikappen på ett säkert sätt med hjälp av SIGNATUR för delad åtkomst (SAS). Den här signaturen skickas igenom som en frågeparameter och måste verifieras innan arbetsflödet kan köras. Azure genererar signaturen med en unik kombination av en hemlig nyckel per logikapp, utlösarnamnet och den åtgärd som utförs. Så om inte någon har åtkomst till den hemliga logikappnyckeln kan de inte generera en giltig signatur.

Viktigt!

För produktion och högre säkerhetssystem rekommenderar vi starkt att du anropar arbetsflödet direkt från webbläsaren av följande skäl:

  • Nyckeln för delad åtkomst visas i URL:en.
  • Du kan inte hantera principer för säkerhetsinnehåll på grund av delade domäner mellan Azure Logic Apps-kunder.

Mer information om säkerhet, auktorisering och kryptering för inkommande anrop till arbetsflödet, till exempel TLS (Transport Layer Security), tidigare känt som Secure Sockets Layer (SSL), Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), exponera ditt logikapparbetsflöde med Azure API Management eller begränsa IP-adresser som kommer från inkommande anrop finns i Säker åtkomst och data – Åtkomst för inkommande anrop till begärandebaserade utlösare.

F: Kan jag konfigurera anropsbara slutpunkter ytterligare?

S: Ja, HTTPS-slutpunkter stöder mer avancerad konfiguration via Azure API Management. Den här tjänsten erbjuder också möjligheten för dig att konsekvent hantera alla dina API:er, inklusive logikappar, konfigurera anpassade domännamn, använda fler autentiseringsmetoder och mer, till exempel:

Nästa steg