Chiamare, attivare o annidare i flussi di lavoro con endpoint HTTP in app per la logicaCall, trigger, or nest workflows with HTTP endpoints in logic apps

È possibile esporre a livello nativo gli endpoint HTTP sincroni come trigger sulle app per la logica, permettendo in tal modo di attivare o di chiamare le app per la logica tramite un URL.You can natively expose synchronous HTTP endpoints as triggers on logic apps so that you can trigger or call your logic apps through a URL. È inoltre possibile annidare i flussi di lavoro nell'app per la logica usando un modello di endpoint richiamabile.You can also nest workflows in your logic apps by using a pattern of callable endpoints.

Per creare gli endpoint HTTP, è possibile aggiungere questi trigger in modo che le app per la logica possano ricevere le richieste in ingresso:To create HTTP endpoints, you can add these triggers so that your logic apps can receive incoming requests:

Configurare un endpoint HTTP per un'app per la logicaSet up an HTTP endpoint for your logic app

Per creare un endpoint HTTP, aggiungere un trigger in grado di ricevere le richieste in ingresso.To create an HTTP endpoint, add a trigger that can receive incoming requests.

  1. Accedere al Portale di Azure.Sign in to the Azure portal. Andare in app per la logica e aprire Progettazione app per la logica.Go to your logic app, and open Logic App Designer.

  2. Aggiungere un trigger che consente all'app per la logica di ricevere richieste in ingresso.Add a trigger that lets your logic app receive incoming requests. Ad esempio aggiungere il trigger Request all'app per la logica.For example, add the Request trigger to your logic app.

  3. In Schema JSON del corpo della richiesta è possibile immettere uno schema JSON per il payload (dati) che si prevede il trigger possa ricevere.Under Request Body JSON Schema, you can optionally enter a JSON schema for the payload (data) that you expect the trigger to receive.

    La finestra di progettazione usa questo schema per generare token di cui l'app per la logica si può servire per usare, analizzare e passare dati dal trigger attraverso il flusso di lavoro.The designer uses this schema for generating tokens that your logic app can use to consume, parse, and pass data from the trigger through your workflow. Altre informazioni sui token generati da schemi JSON.More about tokens generated from JSON schemas.

    In questo esempio, immettere lo schema indicato nella finestra di progettazione:For this example, enter the schema shown in the designer:

    {
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        }
      },
      "required": [
        "address"
      ]
    }
    

    Aggiungere l'azione Request

    Suggerimento

    È possibile generare uno schema per un payload JSON di esempio da uno strumento come jsonschema.net, o nel trigger Richiesta scegliendo Usare il payload di esempio per generare lo schema.You can generate a schema for a sample JSON payload from a tool like jsonschema.net, or in the Request trigger by choosing Use sample payload to generate schema. Immettere il payload di esempio e scegliere Fine.Enter your sample payload, and choose Done.

    Ad esempio, questo payload di esempio:For example, this sample payload:

    {
       "address": "21 2nd Street, New York, New York"
    }
    

    genera questo schema:generates this schema:

    {
       "type": "object",
       "properties": {
          "address": {
             "type": "string" 
          }
       }
    }
    
  4. Salvare l'app per la logica.Save your logic app. In HTTP POST in questo URL, è necessario individuare un URL di callback generato, come in questo esempio:Under HTTP POST to this URL, you should now find a generated callback URL, like this example:

    URL di callback generato per endpoint

    L'URL contiene una chiave di firma di accesso condiviso (SAS) nei parametri di query usati per l'autenticazione.This URL contains a Shared Access Signature (SAS) key in the query parameters that are used for authentication. È inoltre possibile ottenere l'URL dell'endpoint HTTP dalla panoramica dell'app per la logica nel portale di Azure.You can also get the HTTP endpoint URL from your logic app overview in the Azure portal. In Cronologia trigger selezionare il trigger:Under Trigger History, select your trigger:

    Ottenere l'URL dell'endpoint HTTP GET dal portale di Azure

    Oppure è possibile ottenere l'URL mediante questa chiamata:Or you can get the URL by making this call:

    POST https://management.azure.com/{logic-app-resourceID}/triggers/{myendpointtrigger}/listCallbackURL?api-version=2016-06-01
    

Modificare il metodo HTTP per il triggerChange the HTTP method for your trigger

Per impostazione predefinita, il trigger Richiesta prevede una richiesta HTTP POST, ma è possibile usare un metodo HTTP diverso.By default, the Request trigger expects an HTTP POST request, but you can use a different HTTP method.

Nota

È possibile specificare solo un tipo di metodo.You can specify only one method type.

  1. Nel trigger Richiesta scegliere Mostra opzioni avanzate.On your Request trigger, choose Show advanced options.

  2. Aprire l'elenco Metodo.Open the Method list. Per questo esempio, selezionare GET (OTTIENI) in modo che sia possibile testare l'URL dell'endpoint HTTP in un secondo momento.For this example, select GET so that you can test your HTTP endpoint's URL later.

    Nota

    È possibile selezionare qualsiasi altro metodo HTTP o specificare un metodo personalizzato per la propria app per la logica.You can select any other HTTP method, or specify a custom method for your own logic app.

    Modificare il metodo HTTP

Accettare i parametri tramite l'URL dell'endpoint HTTPAccept parameters through your HTTP endpoint URL

Quando si desidera che l'URL dell'endpoint HTTP accetti i parametri, personalizzare il percorso relativo al trigger.When you want your HTTP endpoint URL to accept parameters, customize your trigger's relative path.

  1. Nel trigger Richiesta scegliere Mostra opzioni avanzate.On your Request trigger, choose Show advanced options.

  2. In Metodo specificare il metodo HTTP che la richiesta deve usare.Under Method, specify the HTTP method that you want your request to use. Per questo esempio, selezionare il metodo GET (OTTIENI), se non lo si è già fatto, in modo che sia possibile testare l'URL dell'endpoint HTTP.For this example, select the GET method, if you haven't already, so that you can test your HTTP endpoint's URL.

    Nota

    Quando si specifica un percorso relativo per il trigger, è necessario specificare anche in modo esplicito un metodo HTTP per il trigger.When you specify a relative path for your trigger, you must also explicitly specify an HTTP method for your trigger.

  3. In Percorso relativo specificare il percorso relativo per il parametro che l'URL deve accettare, ad esempio, customers/{customerID}.Under Relative path, specify the relative path for the parameter that your URL should accept, for example, customers/{customerID}.

    Specificare il percorso relativo e il metodo HTTP per il parametro

  4. Per usare il parametro, aggiungere un'azione Risposta all'app per la logica.To use the parameter, add a Response action to your logic app. (Nel trigger scegliere Nuovo passaggio > Aggiungi un'azione > Risposta)(Under your trigger, choose New step > Add an action > Response)

  5. Nel corpo della risposta includere il token per il parametro specificato nel percorso relativo del trigger.In your response's Body, include the token for the parameter that you specified in your trigger's relative path.

    Ad esempio, per restituire Hello {customerID}, aggiornare il corpo della risposta con Hello {customerID token}.For example, to return Hello {customerID}, update your response's Body with Hello {customerID token}. Viene visualizzato l'elenco del contenuto dinamico che mostra il token customerID da selezionare.The dynamic content list should appear and show the customerID token for you to select.

    Aggiungere un parametro al corpo della risposta

    Il corpo dovrebbe essere simile al seguente:Your Body should look like this example:

    Corpo della risposta con parametri

  6. Salvare l'app per la logica.Save your logic app.

    L'URL dell'endpoint HTTP include ora il percorso relativo, ad esempio:Your HTTP endpoint URL now includes the relative path, for example:

    https://prod-00.southcentralus.logic.azure.com/workflows/f90cb66c52ea4e9cabe0abf4e197deff/triggers/manual/paths/invoke/customers/{customerID}...https://prod-00.southcentralus.logic.azure.com/workflows/f90cb66c52ea4e9cabe0abf4e197deff/triggers/manual/paths/invoke/customers/{customerID}...

  7. Per testare l'endpoint HTTP, copiare e incollare l'URL aggiornato in un'altra finestra del browser, ma sostituire {customerID} con 123456 e premere Invio.To test your HTTP endpoint, copy and paste the updated URL into another browser window, but replace {customerID} with 123456, and press Enter.

    Il browser deve mostrare questo testo:Your browser should show this text:

    Hello 123456

Token generati da schemi JSON per l'app per la logicaTokens generated from JSON schemas for your logic app

Quando si specifica uno schema JSON nel trigger Richiesta, la finestra di progettazione app per la logica genera i token per le proprietà nello schema.When you provide a JSON schema in your Request trigger, the Logic App Designer generates tokens for properties in that schema. È quindi possibile usare tali token per passare dati tramite il flusso di lavoro di app per la logica.You can then use those tokens for passing data through your logic app workflow.

Per questo esempio, se si aggiungono le proprietà title e name allo schema JSON, i token sono ora disponibili per essere usati nei passaggi successivi del flusso di lavoro.For this example, if you add the title and name properties to your JSON schema, their tokens are now available to use in later workflow steps.

Di seguito è riportato lo schema JSON completo:Here is the complete JSON schema:

{
   "type": "object",
   "properties": {
      "address": {
         "type": "string"
      },
      "title": {
         "type": "string"
      },
      "name": {
         "type": "string"
      }
   },
   "required": [
      "address",
      "title",
      "name"
   ]
}

Creare flussi di lavoro annidati per le app per la logicaCreate nested workflows for logic apps

È possibile nidificare i flussi di lavoro nell'app per la logica aggiungendo altre app per la logica che possono ricevere richieste.You can nest workflows in your logic app by adding other logic apps that can receive requests. Per includere queste app per la logica, aggiungere l'azione Azure Logic Apps - Choose a Logic Apps workflow (App per la logica di Azure - Scegliere un flusso di lavoro delle app per la logica) al trigger.To include these logic apps, add the Azure Logic Apps - Choose a Logic Apps workflow action to your trigger. È quindi possibile selezionare dalle app per la logica idonee.You can then select from eligible logic apps.

Aggiungere un'altra app per la logica

Chiamare o avviare le app per la logica tramite endpoint HTTPCall or trigger logic apps through HTTP endpoints

Dopo aver creato l'endpoint HTTP, è possibile attivare l'app per la logica tramite un metodo POST per l'URL completo.After you create your HTTP endpoint, you can trigger your logic app through a POST method to the full URL. Le app per la logica dispongono di supporto incorporato per gli endpoint di accesso diretto.Logic apps have built-in support for direct-access endpoints.

Riferimento al contenuto dalla richiesta in ingressoReference content from an incoming request

Se il tipo di contenuto è application/json, è possibile fare riferimento a proprietà dalla richiesta in ingresso.If the content's type is application/json, you can reference properties from the incoming request. In caso contrario, il contenuto viene considerato come una singola unità binaria che è possibile passare ad altre API.Otherwise, content is treated as a single binary unit that you can pass to other APIs. Per fare riferimento a questo contenuto all'interno del flusso di lavoro è necessario convertire il contenuto.To reference this content inside the workflow, you must convert that content. Se ad esempio si passa il contenuto application/xml, è possibile usare @xpath() per eseguire un'estrazione XPath o @json() per la conversione da XML a JSON.For example, if you pass application/xml content, you can use @xpath() for an XPath extraction, or @json() for converting XML to JSON. Informazioni sull'uso dei tipi di contenuto.Learn about working with content types.

Per ottenere l'output da una richiesta in ingresso, è possibile usare la funzione @triggerOutputs().To get the output from an incoming request, you can use the @triggerOutputs() function. L'output potrebbe essere simile al seguente:The output might look like this example:

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

È possibile accedere in modo specifico alla proprietà body mediante il collegamento @triggerBody().To access the body property specifically, you can use the @triggerBody() shortcut.

Rispondere alle richiesteRespond to requests

Per alcune richieste che avviano un'app per la logica, può risultare utile rispondere restituendo contenuto al chiamante.You might want to respond to certain requests that start a logic app by returning content to the caller. Per creare il codice di stato, l'intestazione e il corpo della risposta, è possibile usare l'azione Risposta.To construct the status code, header, and body for your response, you can use the Response action. Questa azione può trovarsi in qualsiasi punto nell'app per la logica, non solo alla fine del flusso di lavoro.This action can appear anywhere in your logic app, not just at the end of your workflow.

Nota

Se l'app per la logica non include una Risposta, l'endpoint HTTP risponde immediatamente con uno stato 202 -Accettato.If your logic app doesn't include a Response, the HTTP endpoint responds immediately with a 202 Accepted status. Nell'app per la logica, per far sì che la richiesta originale ottenga la risposta, tutti i passaggi necessari devono essere completati entro i limiti di tempo della richiesta, salvo se si chiama il flusso di lavoro come app per la logica annidata.Also, for the original request to get the response, all steps required for the response must finish within the request timeout limit unless you call the workflow as a nested logic app. Se non si ottiene alcuna azione di risposta entro questo limite, si verifica il timeout della richiesta in ingresso, che riceverà una risposta HTTP 408 Client timeout (408 - Timeout client).If no response happens within this limit, the incoming request times out and receives the HTTP response 408 Client timeout. Per le app per la logica annidate, l'app per la logica padre resta in attesa di una risposta fino al completamento, indipendentemente dal tempo necessario.For nested logic apps, the parent logic app continues to wait for a response until completed, regardless of how much time is required.

Costruire la rispostaConstruct the response

È possibile includere più di un'intestazione e qualsiasi tipo di contenuto nel corpo della risposta.You can include more than one header and any type of content in the response body. Nel nostro esempio di risposta, l'intestazione specifica che la risposta contiene il tipo di contenuto application/json,In our example response, the header specifies that the response has content type application/json. mentre il corpo contiene title e name, in base allo schema JSON aggiornato in precedenza per il trigger Richiesta.and the body contains title and name, based on the JSON schema updated previously for the Request trigger.

Azione di risposta HTTP

Le risposte hanno le seguenti proprietà:Responses have these properties:

ProprietàProperty DescrizioneDescription
statusCodestatusCode Specifica il codice di stato HTTP per la risposta alla richiesta in ingresso.Specifies the HTTP status code for responding to the incoming request. Può essere qualsiasi codice di stato valido che inizia con 2xx, 4xx o 5xx.This code can be any valid status code that starts with 2xx, 4xx, or 5xx. I codici di stato 3xx non sono consentiti.However, 3xx status codes are not permitted.
headersheaders Definisce un numero illimitato di intestazioni da includere nella risposta.Defines any number of headers to include in the response.
bodybody Specifica un oggetto body che può essere una stringa, un oggetto JSON o anche contenuto binario a cui si fa riferimento da un passaggio precedente.Specifies a body object that can be a string, a JSON object, or even binary content referenced from a previous step.

Di seguito viene riportato l'aspetto che lo schema JSON dovrebbe avere ora per l'azione Risposta:Here's what the JSON schema looks like now for the Response action:

"Response": {
   "inputs": {
      "body": {
         "title": "@{triggerBody()?['title']}",
         "name": "@{triggerBody()?['name']}"
      },
      "headers": {
           "content-type": "application/json"
      },
      "statusCode": 200
   },
   "runAfter": {},
   "type": "Response"
}

Suggerimento

Per visualizzare la definizione JSON completa per l'app per la logica, nella finestra di progettazione dell'app per la logica, scegliere Visualizzazione codice.To view the complete JSON definition for your logic app, on the Logic App Designer, choose Code view.

Domande e risposteQ & A

D: Come viene garantita la sicurezza degli URL?Q: What about URL security?

R: Azure genera in modo sicuro gli URL di callback dell'app per la logica mediante una firma di accesso condiviso (SAS).A: Azure securely generates logic app callback URLs using a Shared Access Signature (SAS). La firma viene trasmessa come parametro di query e deve essere convalidata prima dell'attivazione dell'app per la logica.This signature passes through as a query parameter and must be validated before your logic app can fire. Azure genera la firma con una combinazione univoca che include la chiave privata per ogni app per la logica, il nome del trigger e l'operazione in esecuzione.Azure generates the signature using a unique combination of a secret key per logic app, the trigger name, and the operation that's performed. Pertanto, a meno che un utente non ottenga l'accesso alla chiave privata dell'app per la logica, non potrà generare una firma valida.So unless someone has access to the secret logic app key, they cannot generate a valid signature.

Importante

Per i sistemi di produzione e protezione, è consigliabile evitare la chiamata dell'app per la logica direttamente dal browser in quanto:For production and secure systems, we strongly recommend against calling your logic app directly from the browser because:

  • La chiave di accesso condiviso viene visualizzata nell'URL.The shared access key appears in the URL.
  • Non è possibile gestire i criteri di contenuto protetti a causa di domini condivisi tra i clienti di App per la logica.You can't manage secure content policies due to shared domains across Logic App customers.

D: È possibile configurare ulteriormente gli endpoint HTTP?Q: Can I configure HTTP endpoints further?

R: Sì, gli endpoint HTTP supportano configurazioni più avanzate tramite la Gestione API.A: Yes, HTTP endpoints support more advanced configuration through API Management. Questo servizio offre inoltre la possibilità di gestire tutte le API in modo coerente, incluse le app per la logica, di impostare i nomi di dominio personalizzato, usare più metodi di autenticazione e altro ancora, ad esempio:This service also offers the capability for you to consistently manage all your APIs, including logic apps, set up custom domain names, use more authentication methods, and more, for example:

D: Che cosa è cambiato con la migrazione dello schema dall'anteprima del 1 dicembre 2014?Q: What changed when the schema migrated from the December 1, 2014 preview?

R: Di seguito è riportato un riepilogo di queste modifiche:A: Here's a summary about these changes:

Anteprima del 1 dicembre 2014December 1, 2014 preview 1 giugno 2016June 1, 2016
Fare clic sull'app per le API Listener HTTPClick HTTP Listener API App Fare clic su Attivazione manuale. Non è necessaria un'app per le API.Click Manual trigger (no API App required)
Impostazione di Listener HTTP "Send response automatically" (Invia risposta automaticamente)HTTP Listener setting "Sends response automatically" Includere o meno un'azione Risposta nella definizione del flusso di lavoroEither include a Response action or not in the workflow definition
Configurare l'autenticazione di base o OAuthConfigure Basic or OAuth authentication tramite Gestione APIvia API Management
Configurare il metodo HTTPConfigure HTTP method In Mostra opzioni avanzate scegliere un metodo HTTPUnder Show advanced options, choose an HTTP method
Configurare il percorso relativoConfigure relative path In Mostra opzioni avanzate aggiungere un percorso relativoUnder Show advanced options, add a relative path
Fare riferimento all'oggetto body in ingresso tramite @triggerOutputs().body.ContentReference the incoming body through @triggerOutputs().body.Content Fare riferimento tramite @triggerOutputs().bodyReference through @triggerOutputs().body
Send HTTP response (Invia risposta HTTP) nel Listener HTTPSend HTTP response action on the HTTP Listener Fare clic su Respond to HTTP request (Rispondi alla richiesta HTTP). Non è necessaria un'app per le API.Click Respond to HTTP request (no API App required)

Ottenere aiutoGet help

Per porre domande, fornire risposte e ottenere informazioni sulle attività degli altri utenti di App per la logica di Azure, vedere il forum su App per la logica di Azure.To ask questions, answer questions, and learn what other Azure Logic Apps users are doing, visit the Azure Logic Apps forum.

Per contribuire al miglioramento delle App per la logica di Azure e dei connettori, votare o inviare idee al sito dei commenti e suggerimenti degli utenti di App per la logica di Azure.To help improve Azure Logic Apps and connectors, vote on or submit ideas at the Azure Logic Apps user feedback site.

Passaggi successiviNext steps