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:
- Aanvragen
- HTTP-webhook
- Beheerde connectortriggers met het type ApiConnectionWebhook en kunnen binnenkomende HTTPS-aanvragen ontvangen
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 aanvraagtrigger 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.
Installeer of gebruik een hulpprogramma waarmee HTTP-aanvragen kunnen worden verzonden om uw oplossing te testen, bijvoorbeeld:
- Visual Studio Code met een extensie van Visual Studio Marketplace
- PowerShell Invoke-RestMethod
- Microsoft Edge - Hulpprogramma voor netwerkconsole
- Bruno
- curl
Let op
Voor scenario's waarin u gevoelige gegevens hebt, zoals referenties, geheimen, toegangstokens, API-sleutels en andere vergelijkbare informatie, moet u een hulpprogramma gebruiken waarmee uw gegevens worden beveiligd met de benodigde beveiligingsfuncties, offline of lokaal werken, uw gegevens niet worden gesynchroniseerd met de cloud en u zich niet hoeft aan te melden bij een onlineaccount. Op deze manier vermindert u het risico dat gevoelige gegevens openbaar worden gemaakt voor het publiek.
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:
Open in Azure Portal uw resource voor de logische standaard-app en lege werkstroom in de ontwerpfunctie.
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" } } } } }
U kunt ook een JSON-schema genereren door een voorbeeldpayload op te geven:
Selecteer In de aanvraagtrigger voorbeeldpayload gebruiken om een schema te genereren.
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" } }
Wanneer u klaar bent, selecteert u Gereed.
In het vak JSON-schema voor aanvraagbody ziet u nu het gegenereerde schema.
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.
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.
Als u de callback-URL wilt testen en de werkstroom wilt activeren, verzendt u een HTTP-aanvraag naar de URL, inclusief de methode die de aanvraagtrigger verwacht, met behulp van uw HTTP-aanvraagprogramma en de bijbehorende instructies.
In dit voorbeeld wordt de POST-methode gebruikt met de gekopieerde URL, die eruitziet als in het volgende voorbeeld:
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.
Open in de aanvraagtrigger de lijst geavanceerde parameters en selecteer Methode, waarmee deze eigenschap wordt toegevoegd aan de trigger.
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
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.
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.
Voer de volgende stappen uit om de
triggerOutputs()
expressie te bouwen waarmee de parameterwaarde wordt opgehaald: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.
Voer in het expressievak de volgende expressie in, vervang deze
parameter-name
door de parameternaam en selecteer OK.triggerOutputs()['queries']['parameter-name']
In de eigenschap Hoofdtekst wordt de expressie omgezet in het
triggerOutputs()
token.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:
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:
Uw aanroepbare eindpunt testen
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
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
Open in de aanvraagtrigger de lijst geavanceerde parameters en selecteer Relatief pad, waarmee deze eigenschap wordt toegevoegd aan de trigger.
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}
.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.
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}
.Voer
Postal Code:
in de eigenschap Hoofdtekst een volgruimte in. Houd de cursor in het invoervak zodat de lijst met dynamische inhoud geopend blijft.Selecteer in de lijst met dynamische inhoud in de sectie Wanneer een HTTP-aanvraag wordt ontvangen de uitvoer van de trigger Path Parameters postalCode .
De eigenschap Hoofdtekst bevat nu de geselecteerde parameter:
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}
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 door123456
en drukt u op Enter.De browser retourneert een antwoord met deze tekst:
Postal Code: 123456
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:
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.
Selecteer in de lijst Werkstroomnaam de werkstroom die u wilt aanroepen, bijvoorbeeld:
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 .
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:
- De aanvraagmethode wijzigen
- De URL-segmenten van de aanvraag wijzigen
- Uw API Management-domeinen instellen in Azure Portal
- Beleid instellen om te controleren op basisverificatie