Ricevere e rispondere a chiamate HTTPS in ingresso ai flussi di lavoro in App per la logica di Azure
Si applica a: App per la logica di Azure (a consumo e standard)
Questa guida pratica illustra come creare un flusso di lavoro di App per la logica in grado di ricevere e gestire una richiesta HTTPS in ingresso o una chiamata da un altro servizio usando il trigger di richiesta predefinito. Quando il flusso di lavoro usa questo trigger, è quindi possibile rispondere alla richiesta HTTPS usando l'azione di risposta predefinita.
Nota
L'azione di risposta funziona solo quando si usa il trigger di Richiesta.
Ad esempio, questo elenco descrive alcune attività che il flusso di lavoro può eseguire quando si usano il trigger di Richiesta e l’azione di risposta:
Riceva e risponda a una richiesta HTTPS di dati in un database locale.
Ricevere e rispondere a una richiesta HTTPS inviata da un altro flusso di lavoro dell'App per la logica.
Attivare un’esecuzione di un flusso di lavoro quando si verifica un evento webhook esterno.
Per eseguire il flusso di lavoro inviando invece una richiesta in uscita, usare il trigger HTTP o l'azione HTTP predefiniti.
Prerequisiti
Account e sottoscrizione di Azure. Se non si ha una sottoscrizione, è possibile iscriversi per creare un account Azure gratuito.
Flusso di lavoro dell'app per la logica in cui si vuole ricevere la richiesta HTTPS in ingresso. Per avviare il flusso di lavoro con un trigger di Richiesta, è necessario iniziare con un flusso di lavoro vuoto. Per usare l'azione di risposta, il flusso di lavoro deve iniziare con il trigger di Richiesta.
Installare o usare uno strumento che può inviare richieste HTTP per testare la soluzione, ad esempio:
- Visual Studio Code con un'estensione da Visual Studio Marketplace
- Invoke-RestMethod di PowerShell
- Microsoft Edge - Strumento console di rete
- Bruno
- curl
Attenzione
Per gli scenari in cui sono presenti dati sensibili, ad esempio credenziali, segreti, token di accesso, chiavi API e altre informazioni simili, assicurarsi di usare uno strumento che protegge i dati con le funzionalità di sicurezza necessarie, funziona offline o in locale, non sincronizza i dati nel cloud e non richiede l'accesso a un account online. In questo modo si riduce il rischio di esporre i dati sensibili al pubblico.
Aggiungere un trigger di richiesta
Il trigger di Richiesta crea un endpoint che può essere chiamato manualmente e che gestisce solo richieste in ingresso su HTTPS. Quando il chiamante invia una richiesta a questo endpoint, il trigger di Richiesta viene attivato ed esegue il flusso di lavoro. Per informazioni su come chiamare questo trigger, vedere Chiamare, attivare o annidare flussi di lavoro con endpoint HTTPS in App per la logica di Azure.
Nel portale di Azure, aprire l'App per la logica a consumo e il flusso di lavoro vuoto nella finestra di progettazione.
Nella finestra di progettazione, seguire questi passaggi generali per trovare e aggiungere il trigger di richiesta predefinito denominato Quando viene ricevuta una richiesta HTTP.
Dopo che la casella delle informazioni sul trigger è apparse, specificare le informazioni seguenti come richiesto:
Nome della proprietà Nome proprietà JSON Obbligatorio Descrizione URL POST HTTP {none} Sì L'URL dell'endpoint generato dopo il salvataggio del flusso di lavoro viene usato per inviare una richiesta che attiva il flusso di lavoro. Corpo della richiesta: Schema JSON schema
No Schema JSON che descrive le proprietà e i valori nel corpo della richiesta in ingresso. La finestra di progettazione usa questo schema per generare token per le proprietà nella richiesta. In questo modo, il flusso di lavoro può analizzare, utilizzare e passare output dal trigger di Richiesta al flusso di lavoro.
Se non si dispone di uno schema JSON, è possibile generarlo da un payload di esempio tramite Usa payload di esempio per generare la funzionalità dello schema.L'esempio seguente mostra uno schema JSON campione:
L'esempio seguente mostra lo schema JSON campione completo:
{ "type": "object", "properties": { "account": { "type": "object", "properties": { "name": { "type": "string" }, "ID": { "type": "string" }, "address": { "type": "object", "properties": { "number": { "type": "string" }, "street": { "type": "string" }, "city": { "type": "string" }, "state": { "type": "string" }, "country": { "type": "string" }, "postalCode": { "type": "string" } } } } } } }
Quando si immette uno schema JSON, la finestra di progettazione mostra un promemoria per includere l'intestazione Tipo di contenuto nella richiesta e impostare il valore dell'intestazione su application/json. Per altre informazioni, vedere Gestire i tipi di contenuti.
L'esempio seguente mostra come l'intestazione Content-Type viene visualizzata in formato JSON:
{ "Content-Type": "application/json" }
Per generare uno schema JSON basato sul payload previsto (dati), è possibile usare uno strumento come JSONSchema.netoppure seguire questa procedura:
Nel trigger di Richiesta selezionare Usare il payload di esempio per generare lo schema.
Immettere il payload di esempio e selezionare Fine.
L'esempio seguente mostra il payload campione:
{ "account": { "name": "Contoso", "ID": "12345", "address": { "number": "1234", "street": "Anywhere Street", "city": "AnyTown", "state": "AnyState", "country": "USA", "postalCode": "11111" } } }
Per verificare che la chiamata in ingresso abbia un corpo della richiesta corrispondente allo schema specificato, seguire questa procedura:
Per imporre al messaggio in ingresso di avere gli stessi campi descritti nello schema, aggiungere la proprietà
required
nello schema e specificare i campi necessari. Aggiungere la proprietàaddtionalProperties
e impostare il valore sufalse
.Ad esempio, lo schema seguente specifica che il messaggio in ingresso deve avere il campo
msg
e nessun altro campo:{ "properties": { "msg": { "type": "string" } }, "type": "object", "required": ["msg"], "additionalProperties": false }
Nella barra del titolo del trigger di Richiesta, selezionare il pulsante con i puntini di sospensione (...).
Nelle impostazioni del trigger, attivare Convalida dello schema e selezionare Fine.
Se il corpo della richiesta della chiamata in ingresso non corrisponde allo schema, il trigger restituisce un errore HTTP 400 Richiesta non valida.
Per aggiungere altre proprietà o parametri al trigger, aprire l'elenco Aggiungi nuovo parametro e selezionare i parametri da aggiungere.
Nome della proprietà Nome proprietà JSON Obbligatorio Descrizione Metodo method
No Metodo che le richieste in ingresso devono usare per chiamare l'app per la logica Percorso relativo relativePath
No Percorso relativo per il parametro che l'URL dell'endpoint dell'app per la logica può accettare Nell'esempio seguente viene aggiunta la proprietà Metodo:
La proprietà Metodo viene visualizzata nel trigger, in modo che sia possibile selezionare un metodo nell'elenco.
Una volta pronti, salvare il flusso di lavoro. Sulla barra degli strumenti della finestra di progettazione seleziona Salva.
Questo passaggio genera l'URL che può essere usato per inviare una richiesta che attiva il flusso di lavoro.
Per copiare l'URL generato, selezionare l'icona di copia accanto all'URL.
Nota
Se si vuole includere il simbolo hash o cancelletto (#) nell'URI quando si effettua una chiamata al trigger di Richiesta, usare invece questa versione codificata:
%25%23
Continuare a creare il flusso di lavoro aggiungendo un'altra azione come passaggio successivo. È ad esempio possibile rispondere alla richiesta aggiungendo un'azione di risposta, che può essere usata per restituire una risposta personalizzata ed è descritta più avanti in questo articolo.
Nota
Il flusso di lavoro mantiene aperta una richiesta in ingresso solo per un periodo di tempo limitato. Supponendo che il flusso di lavoro includa anche un'azione di risposta, se il flusso di lavoro non restituisce una risposta al chiamante dopo la scadenza di questo periodo di tempo, il flusso di lavoro restituisce lo stato 504 GATEWAY TIMEOUT al chiamante. Se il flusso di lavoro non include un'azione di risposta, restituisce immediatamente lo stato 202 ACCEPTED al chiamante.
Per informazioni sulla sicurezza, l'autenticazione e la crittografia per le chiamate in ingresso al flusso di lavoro, ad esempio Transport Layer Security (TLS), precedentemente noto come Secure Sockets Layer (SSL), OAuth con MICROSOFT Entra ID, firme di accesso condiviso (SAS), esporre la risorsa dell'app per la logica con Azure Gestione API o limitare gli indirizzi IP che hanno origine chiamate in ingresso, vedere Accesso sicuro e dati: accesso per le chiamate in ingresso ai trigger basati su richiesta.
Output dei trigger
La tabella seguente elenca gli output del trigger di Richiesta:
Nome proprietà JSON | Tipo di dati | Descrizione |
---|---|---|
headers | Object | Oggetto JSON che descrive le intestazioni della richiesta |
body | Object | Oggetto JSON che descrive il contenuto del corpo della richiesta |
Aggiungere un'azione di risposta
Quando si usa il trigger di Richiesta per ricevere richieste in ingresso, è possibile modellare la risposta e inviare nuovamente i risultati del payload al chiamante usando l'azione di risposta predefinita, che funziona solo con il trigger di Richiesta. Questa combinazione del trigger di Richiesta con l'azione di risposta crea il motivo richiesta-risposta. Ad eccezione di all’interno di cicli Foreach e cicli Until, nonché dei rami paralleli, è possibile aggiungere l'azione di risposta in qualsiasi punto del flusso di lavoro.
Importante
Se l'azione di risposta include le intestazioni seguenti, App per la logica di Azure rimuove automaticamente le intestazioni dal messaggio di risposta generato senza mostrare alcun avviso o errore. App per la logica di Azure non includerà queste intestazioni, anche se il servizio non impedirà di salvare i flussi di lavoro che hanno un'azione di risposta con queste intestazioni.
Allow
- Intestazioni
Content-*
ad eccezione diContent-Disposition
,Content-Encoding
eContent-Type
quando si usano operazioni POST e PUT, ma non sono incluse per operazioni GET Cookie
Expires
Last-Modified
Set-Cookie
Transfer-Encoding
Se si dispone di una o più azioni di risposta in un flusso di lavoro complesso con rami, assicurarsi che il flusso di lavoro elabori almeno un'azione di risposta durante il runtime. Altrimenti, se tutte le azioni di risposta vengono ignorate, il chiamante riceve un errore 502 Gateway non valido, anche se il flusso di lavoro è completato correttamente.
In un flusso di lavoro senza stato di un’App per la logica Standard, l'azione di risposta deve apparire per ultima nel flusso di lavoro. Se l'azione appare altrove, App per la logica di Azure la eseguirà comunque finché tutte le altre azioni non avranno terminato l'esecuzione.
Nella finestra di progettazione del flusso di lavoro , seguire questi passaggi generali per trovare e aggiungere l'azione predefinita di risposta denominata Risposta.
Per semplicità, gli esempi seguenti mostrano un trigger di Richiesta compresso.
Nella casella di informazioni sull'azione aggiungere i valori necessari per il messaggio di risposta.
Nome della proprietà Nome proprietà JSON Obbligatorio Descrizione Codice di stato statusCode
Sì Codice di stato da restituire nella risposta Intestazioni headers
No Oggetto JSON che descrive una o più intestazioni da includere nella risposta Testo body
No Il corpo della risposta Quando si effettua una selezione all'interno di un qualsiasi campo di testo, l'elenco di contenuto dinamico viene aperto automaticamente. È quindi possibile selezionare i token che rappresentano gli output disponibili dei passaggi precedenti nel flusso di lavoro. Le proprietà dello schema specificate vengono visualizzate anche in questo elenco di contenuto dinamico. È possibile selezionare queste proprietà per usarle nel flusso di lavoro.
Ad esempio, nel campo Intestazioni, includere Content-Type come nome della chiave e impostare il valore della chiave su application/json, come indicato in precedenza in questo articolo. Per la casella Corpo, è possibile selezionare l'output del corpo del trigger dall'elenco dei contenuti dinamici.
Per visualizzare le intestazioni in formato JSON, selezionare Passa alla visualizzazione Testo.
Per aggiungere altre proprietà per l'azione, ad esempio uno schema JSON per il corpo della risposta, selezionare i parametri da aggiungere nell'elenco Aggiungi nuovo parametro.
Al termine, salvare il flusso di lavoro. Sulla barra degli strumenti della finestra di progettazione seleziona Salva.
Testare il flusso di lavoro
Per attivare il flusso di lavoro, inviare una richiesta HTTP all'URL generato per il trigger di Richiesta, incluso il metodo previsto dal trigger di Richiesta, usando lo strumento di richiesta HTTP e le relative istruzioni.
Per altre informazioni sulla definizione JSON sottostante al trigger e su come chiamare questo trigger, vedere gli argomenti Tipo di trigger di Richiesta e Chiamare, attivare o annidare flussi di lavoro con endpoint HTTP in App per la logica di Azure.
Sicurezza e autenticazione
In un flusso di lavoro dell'app per la logica Standard che inizia con il trigger di Richiesta (ma non con un trigger Webhook), è possibile usare il provisioning di Funzioni di Azure per autenticare le chiamate in ingresso inviate all'endpoint creato da tale trigger usando un'identità gestita. Questo provisioning è noto anche come "Easy Auth". Per altre informazioni, vedere Attivare flussi di lavoro in app per la logica Standard con Easy Auth
Per altre informazioni su sicurezza, autorizzazione e crittografia per le chiamate in ingresso al flusso di lavoro dell’App per la logica, ad esempio Transport Layer Security (TLS), precedentemente noto come Secure Sockets Layer (SSL), Microsoft Entra ID OAuth, esponendo il flusso di lavoro dell'app per la logica con Gestione API di Azure, o limitando gli indirizzi IP che originano chiamate in ingresso, vedere Proteggere l'accesso e i dati: accesso per le chiamate in ingresso ai trigger basati su richiesta.