Werkstromen maken die u kunt aanroepen, activeren of nesten met behulp van HTTPS-eindpunten in Azure Logic Apps

Van toepassing op: Azure Logic Apps (Verbruik + Standard)

Voor sommige scenario's moet u mogelijk een werkstroom voor logische apps maken die binnenkomende aanvragen van andere services of werkstromen kan ontvangen, of een werkstroom die u kunt aanroepen met behulp van een URL. Voor deze taak kunt u een systeemeigen synchroon HTTPS-eindpunt beschikbaar maken in uw werkstroom wanneer u een van de volgende triggertypen op basis van aanvragen gebruikt:

Deze handleiding laat zien hoe u een aanroepbaar eindpunt voor uw werkstroom maakt door de aanvraagtrigger toe te voegen en dat eindpunt vervolgens aan te roepen vanuit een andere werkstroom. Alle principes zijn identiek van toepassing op de andere op aanvragen gebaseerde triggertypen die binnenkomende aanvragen kunnen ontvangen.

Vereisten

  • Een Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.

  • Een werkstroom voor logische apps waarin u de trigger op basis van aanvragen wilt gebruiken om het aanroepbare eindpunt te maken. U kunt beginnen met een lege werkstroom of een bestaande werkstroom waar u de huidige trigger kunt vervangen. Dit voorbeeld begint met een lege werkstroom.

  • Als u de URL wilt testen voor het aanroepbare eindpunt dat u maakt, hebt u een hulpprogramma of app nodig, zoals Postman.

Een aanroepbaar eindpunt maken

Volg de bijbehorende stappen op basis van het feit of u een werkstroom voor een logische standaard- of verbruiks-app hebt:

  1. Open in Azure Portal uw resource voor de logische standaard-app en lege werkstroom in de ontwerpfunctie.

  2. Volg deze algemene stappen om de aanvraagtrigger toe te voegen met de naam Wanneer een HTTP-aanvraag wordt ontvangen.

  3. U kunt desgewenst in het vak JSON-schema voor aanvraagbody een JSON-schema invoeren waarin de nettolading of gegevens worden beschreven die u verwacht dat de trigger wordt ontvangen.

    De ontwerpfunctie gebruikt dit schema om tokens te genereren die triggeruitvoer vertegenwoordigen. U kunt deze uitvoer vervolgens eenvoudig raadplegen in de werkstroom van uw logische app. Meer informatie over tokens die zijn gegenereerd op basis van JSON-schema's.

    Voer voor dit voorbeeld het volgende schema in:

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

    U kunt ook een JSON-schema genereren door een voorbeeldpayload op te geven:

    1. Selecteer In de aanvraagtrigger voorbeeldpayload gebruiken om een schema te genereren.

    2. Voer in het vak Een voorbeeld van een JSON-nettolading invoeren of plakken uw voorbeeldpayload in, bijvoorbeeld:

      {
         "address": {
            "streetNumber": "00000",
            "streetName": "AnyStreet",
            "town": "AnyTown",
            "postalCode": "11111-1111"
        }
      }
      
    3. Wanneer u klaar bent, selecteert u Gereed.

      In het vak JSON-schema voor aanvraagbody ziet u nu het gegenereerde schema.

  4. Sla uw werkstroom op.

    In het vak HTTP POST-URL ziet u nu de gegenereerde callback-URL die andere services kunnen gebruiken om uw werkstroom voor logische apps aan te roepen en te activeren. Deze URL bevat queryparameters die een SAS-sleutel (Shared Access Signature) opgeven, die wordt gebruikt voor verificatie.

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

  5. Als u de callback-URL wilt kopiëren, hebt u de volgende opties:

    • Selecteer rechts van het VAK HTTP POST URL de optie URL kopiëren (pictogram Bestanden kopiëren).

    • Kopieer de callback-URL van de overzichtspagina van uw werkstroom.

      1. Selecteer Overzicht in het werkstroommenu.

      2. Verplaats op de pagina Overzicht onder Werkstroom-URL de aanwijzer over de URL en selecteer Kopiëren naar klembord:

        Screenshot shows Standard workflow and Overview page with workflow URL.

  6. Als u de callback-URL wilt testen die u nu voor de aanvraagtrigger hebt, gebruikt u een hulpprogramma of app zoals Postman en verzendt u de aanvraag met behulp van de methode die de aanvraagtrigger verwacht.

    In dit voorbeeld wordt de POST methode gebruikt:

    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}

Selecteer de verwachte aanvraagmethode

Standaard verwacht de aanvraagtrigger een POST aanvraag. U kunt echter een andere methode opgeven die de aanroeper moet gebruiken, maar slechts één methode.

  1. Open in de aanvraagtrigger de lijst geavanceerde parameters en selecteer Methode, waarmee deze eigenschap wordt toegevoegd aan de trigger.

  2. Selecteer in de lijst Methode de methode die in plaats daarvan door de trigger moet worden verwacht. U kunt ook een aangepaste methode opgeven.

    Selecteer bijvoorbeeld de GET-methode , zodat u de URL van uw eindpunt later kunt testen.

Parameters doorgeven via eindpunt-URL

Als u parameterwaarden wilt accepteren via de URL van het eindpunt, hebt u de volgende opties:

  • Accepteer waarden via GET-parameters of URL-parameters.

    Deze waarden worden doorgegeven als naam-waardeparen in de URL van het eindpunt. Voor deze optie moet u de GET-methode in uw aanvraagtrigger gebruiken. In een volgende actie kunt u de parameterwaarden ophalen als triggeruitvoer met behulp van de triggerOutputs() functie in een expressie.

  • Accepteer waarden via een relatief pad voor parameters in de aanvraagtrigger.

    Deze waarden worden doorgegeven via een relatief pad in de URL van het eindpunt. U moet ook expliciet de methode selecteren die de trigger verwacht. In een volgende actie kunt u de parameterwaarden ophalen als triggeruitvoer door rechtstreeks naar deze uitvoer te verwijzen.

Waarden accepteren via GET-parameters

  1. Open in de aanvraagtrigger de geavanceerde parameters, voeg de eigenschap Methode toe aan de trigger en selecteer de GET-methode .

    Zie De verwachte aanvraagmethode selecteren voor meer informatie.

  2. Volg deze algemene stappen in de ontwerpfunctie om de actie toe te voegen waar u de parameterwaarde wilt gebruiken.

    Selecteer voor dit voorbeeld de actie Antwoord.

  3. Voer de volgende stappen uit om de triggerOutputs() expressie te bouwen waarmee de parameterwaarde wordt opgehaald:

    1. Selecteer in de actie Antwoord de eigenschap Hoofdtekst , zodat de opties voor dynamische inhoud (bliksempictogram) en expressie-editor (formulepictogram) worden weergegeven. Selecteer het formulepictogram om de expressie-editor te openen.

    2. Voer in het expressievak de volgende expressie in, vervang deze parameter-name door de parameternaam en selecteer OK.

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

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

      In de eigenschap Hoofdtekst wordt de expressie omgezet in het triggerOutputs() token.

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

      Als u de werkstroom opslaat, navigeert u weg van de ontwerpfunctie en keert u terug naar de ontwerpfunctie, toont het token de parameternaam die u hebt opgegeven, bijvoorbeeld:

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

      In de codeweergave wordt de eigenschap Hoofdtekst als volgt weergegeven in de definitie van de antwoordactie:

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

      Stel dat u een waarde wilt doorgeven voor een parameter met de naam postalCode. De eigenschap Hoofdtekst geeft de tekenreeks op, Postal Code: met een volgruimte, gevolgd door de bijbehorende expressie:

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

Uw aanroepbare eindpunt testen

  1. Kopieer vanuit de aanvraagtrigger de werkstroom-URL en plak de URL in een ander browservenster. Voeg in de URL de parameternaam en -waarde toe aan de URL in de volgende indeling en druk op Enter.

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

    Voorbeeld:

    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}

    De browser retourneert een antwoord met deze tekst: Postal Code: 123456

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

Notitie

Als u het hash- of hekje (#) in de URI wilt opnemen, gebruikt u in plaats daarvan deze gecodeerde versie: %25%23

Waarden accepteren via een relatief pad

  1. Open in de aanvraagtrigger de lijst geavanceerde parameters en selecteer Relatief pad, waarmee deze eigenschap wordt toegevoegd aan de trigger.

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

  2. Geef in de eigenschap Relatief pad het relatieve pad op voor de parameter in uw JSON-schema dat u wilt dat uw URL accepteert, bijvoorbeeld /address/{postalCode}.

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

  3. Volg onder de aanvraagtrigger deze algemene stappen om de actie toe te voegen waar u de parameterwaarde wilt gebruiken.

    In dit voorbeeld voegt u de actie Antwoord toe.

  4. Neem in de eigenschap Hoofdtekst van de antwoordactie het token op dat de parameter vertegenwoordigt die u hebt opgegeven in het relatieve pad van de trigger.

    Stel dat u de actie Antwoord wilt retourneren Postal Code: {postalCode}.

    1. Voer Postal Code: in de eigenschap Hoofdtekst een volgruimte in. Houd de cursor in het invoervak zodat de lijst met dynamische inhoud geopend blijft.

    2. Selecteer in de lijst met dynamische inhoud in de sectie Wanneer een HTTP-aanvraag wordt ontvangen de uitvoer van de trigger Path Parameters postalCode .

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

      De eigenschap Hoofdtekst bevat nu de geselecteerde parameter:

      Screenshot shows Standard workflow and example response body with parameter.

  5. Sla uw werkstroom op.

    In de aanvraagtrigger wordt de callback-URL bijgewerkt en bevat nu het relatieve pad, bijvoorbeeld:

    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. Als u het aanroepbare eindpunt wilt testen, kopieert u de bijgewerkte callback-URL van de aanvraagtrigger, plakt u de URL in een ander browservenster, vervangt %7BpostalCode%7D u de URL door 123456en drukt u op Enter.

    De browser retourneert een antwoord met deze tekst: Postal Code: 123456

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

Notitie

Als u het hash- of hekje (#) in de URI wilt opnemen, gebruikt u in plaats daarvan deze gecodeerde versie: %25%23

Werkstroom aanroepen via eindpunt-URL

Nadat u het eindpunt hebt gemaakt, kunt u de werkstroom activeren door een HTTPS-aanvraag naar de volledige URL van het eindpunt te verzenden. Azure Logic Apps-werkstromen bieden ingebouwde ondersteuning voor eindpunten voor directe toegang.

Tokens gegenereerd op schema

Wanneer u een JSON-schema opgeeft in de aanvraagtrigger, genereert de werkstroomontwerper tokens voor de eigenschappen in dat schema. Vervolgens kunt u deze tokens gebruiken om gegevens door te geven via uw werkstroom.

Als u bijvoorbeeld meer eigenschappen toevoegt, zoals "suite", aan uw JSON-schema, zijn tokens voor deze eigenschappen beschikbaar die u in de latere stappen voor uw werkstroom kunt gebruiken. Dit is het volledige JSON-schema:

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

Andere werkstromen aanroepen

U kunt andere werkstromen aanroepen die aanvragen kunnen ontvangen door ze te nesten in de huidige werkstroom. Volg deze stappen om deze werkstromen aan te roepen:

  1. Volg deze algemene stappen in de ontwerpfunctie om de actie Werkstroombewerkingen met de naam Werkstroombewerkingen aanroepen toe te voegen in deze werkstroom-app.

    In de lijst Werkstroomnaam worden de werkstromen weergegeven die u kunt selecteren.

  2. Selecteer in de lijst Werkstroomnaam de werkstroom die u wilt aanroepen, bijvoorbeeld:

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

Naslaginformatie van een binnenkomende aanvraag

Als het inhoudstype van de binnenkomende aanvraag is application/json, kunt u verwijzen naar de eigenschappen in de binnenkomende aanvraag. Anders wordt deze inhoud behandeld als één binaire eenheid die u kunt doorgeven aan andere API's. Als u naar deze inhoud in de werkstroom van uw logische app wilt verwijzen, moet u die inhoud eerst converteren.

Als u bijvoorbeeld inhoud application/xml met type doorgeeft, kunt u de@xpath()expressie gebruiken om een XPath-extractie uit te voeren of de expressie gebruiken voor het @json() converteren van XML naar JSON. Meer informatie over het werken met ondersteunde inhoudstypen.

Als u de uitvoer van een binnenkomende aanvraag wilt ophalen, kunt u de @triggerOutputs expressie gebruiken. Stel dat u uitvoer hebt die er als volgt uitziet:

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

Als u toegang wilt krijgen tot de body eigenschap, kunt u de @triggerBody() expressie gebruiken als een snelkoppeling.

Reageren op verzoeken

Soms wilt u reageren op bepaalde aanvragen die uw werkstroom activeren door inhoud terug te keren naar de beller. Gebruik de actie Antwoord om de statuscode, header en hoofdtekst voor uw antwoord samen te stellen. Deze actie kan overal in uw werkstroom worden weergegeven, niet alleen aan het einde van uw werkstroom. Als uw werkstroom geen antwoordactie bevat, reageert het eindpunt onmiddellijk met de status Geaccepteerd van 202.

Als de oorspronkelijke beller het antwoord kan ophalen, moeten alle vereiste stappen voor het antwoord binnen de time-outlimiet van de aanvraag worden voltooid, tenzij de geactiveerde werkstroom wordt aangeroepen als een geneste werkstroom. Als er binnen deze limiet geen antwoord wordt geretourneerd, treedt er een time-out op voor de binnenkomende aanvraag en ontvangt de time-outreactie van de 408-client.

Voor geneste werkstromen blijft de bovenliggende werkstroom wachten op een antwoord totdat alle stappen zijn voltooid, ongeacht hoeveel tijd er nodig is.

Het antwoord samenstellen

In de hoofdtekst van het antwoord kunt u meerdere headers en elk type inhoud opnemen. De header van het volgende antwoord geeft bijvoorbeeld aan dat het inhoudstype van het antwoord is application/json en dat de hoofdtekst waarden voor de town en postalCode eigenschappen bevat, op basis van het JSON-schema dat eerder in dit onderwerp is beschreven voor de aanvraagtrigger.

Screenshot shows Response action and response content type.

Antwoorden hebben deze eigenschappen:

Eigenschap (weergave) Eigenschap (JSON) Beschrijving
Statuscode statusCode De HTTPS-statuscode die moet worden gebruikt in het antwoord voor de binnenkomende aanvraag. Deze code kan elke geldige statuscode zijn die begint met 2xx, 4xx of 5xx. 3xx-statuscodes zijn echter niet toegestaan.
Kopteksten headers Een of meer headers die moeten worden opgenomen in het antwoord
Tekst body Een hoofdobject dat een tekenreeks, een JSON-object of zelfs binaire inhoud kan zijn waarnaar wordt verwezen uit een vorige stap

Als u de JSON-definitie voor de actie Antwoord en de volledige JSON-definitie van uw werkstroom wilt weergeven, wijzigt u van de ontwerpweergave in de codeweergave.

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

Vragen en antwoorden

V: Hoe zit het met URL-beveiliging voor binnenkomende oproepen?

A: Azure genereert veilig callback-URL's voor logische apps met behulp van Shared Access Signature (SAS). Deze handtekening wordt doorgegeven als een queryparameter en moet worden gevalideerd voordat uw werkstroom kan worden uitgevoerd. Azure genereert de handtekening met behulp van een unieke combinatie van een geheime sleutel per logische app, de triggernaam en de bewerking die wordt uitgevoerd. Dus tenzij iemand toegang heeft tot de sleutel van de logische logische app voor geheim, kan deze persoon geen geldige handtekening genereren.

Belangrijk

Voor productie- en hogere beveiligingssystemen raden we u sterk aan om uw werkstroom rechtstreeks vanuit de browser aan te roepen om deze redenen:

  • De gedeelde toegangssleutel wordt weergegeven in de URL.
  • U kunt beveiligingsinhoudsbeleid niet beheren vanwege gedeelde domeinen in Azure Logic Apps-klanten.

Voor meer informatie over beveiliging, autorisatie en versleuteling voor binnenkomende aanroepen naar uw werkstroom, zoals Transport Layer Security (TLS), voorheen BEKEND als Secure Sockets Layer (SSL), Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), waarmee uw werkstroom voor logische apps beschikbaar wordt gemaakt met Azure API Management of het beperken van de IP-adressen die afkomstig zijn van binnenkomende aanroepen, raadpleegt u Beveiligde toegang en gegevens - Toegang voor binnenkomende aanroepen naar op aanvragen gebaseerde triggers.

V: Kan ik aanroepbare eindpunten verder configureren?

A: Ja, HTTPS-eindpunten ondersteunen geavanceerdere configuratie via Azure API Management. Deze service biedt u ook de mogelijkheid om al uw API's consistent te beheren, inclusief logische apps, aangepaste domeinnamen in te stellen, meer verificatiemethoden te gebruiken en meer, bijvoorbeeld:

Volgende stappen