Esercizio: Aggiungere un'altra app Funzioni di Azure a un'API esistente

Completato

Tenere presente che si vogliono integrare tutti i singoli microservizi che fanno parte di Funzioni di Azure in una singola API. È stata aggiunta l'app per le funzioni Products a una nuova istanza di Gestione API. Ora si vuole aggiungere un'altra app per le funzioni a tale API.

In questo esercizio si aggiunge l'app per le funzioni Orders all'API e si usa lo curl strumento per testare il sistema integrato.

Testare la funzione OrderDetails

Prima di aggiungere l'app per le funzioni Orders all'API, testare la funzione ospitata, ovvero OrderDetails.

  1. Nel menu delle risorse di Azure o nella home page selezionare Tutte le risorse. Viene visualizzato il riquadro Tutte le risorse.

  2. Ordinare le risorse in base al tipo e quindi selezionare l'app per le funzioni il cui nome inizia con OrderFunction. Viene visualizzato il riquadro Panoramica per l'app per le funzioni OrderFunction.

  3. Nell'elenco delle funzioni per l'app per le funzioni selezionare OrderDetails. Viene visualizzato il riquadro Panoramica per la funzione OrderDetails.

  4. Nel menu Dettagli ordine, in Sviluppatore selezionare Codice e test. Viene visualizzato il riquadro Codice e test per la funzione OrderDetails, che mostra il contenuto del file function.json.

    OrderDetails JSON code, with Code + Test in menu and Test/Run in command bar highlighted.

  5. Nella barra dei comandi selezionare Test/Esegui. Viene visualizzata la scheda dei parametri di input per la funzione OrderDetails.

  6. Nel campo Metodo HTTP selezionare GET nell'elenco a discesa e quindi in Query selezionare Aggiungi parametro, nel campo Nome immettere il nome e nel campo Valore immettere Chiba (il campo Valore fa distinzione tra maiuscole e minuscole) e quindi selezionare Esegui.

  7. Si apre una console di log e viene visualizzato lo stato della richiesta. La scheda Output mostra il codice e il contenuto della risposta in formato JSON.

    Add a new function option page appears.

    Facoltativamente, è possibile eseguire più richieste usando i valori dei nomi Henri e Barriclough per ottenere ordini di clienti diversi.

  8. Selezionare Chiudi per chiudere le schede Input e Output per Test/Esegui.

  9. Nella barra dei comandi del riquadro OrderDetails selezionare Recupera URL della funzione. Si noti che l'URL è il nome della funzione all'interno del dominio azurewebsites.net.

Aggiungere una funzione a un'API esistente

In questo passaggio si aggiunge la funzione Order alla risorsa Gestione API creata nell'esercizio precedente. Nell'esercizio precedente è stata usata l'interfaccia di Gestione API dall'interfaccia dell'app per le funzioni. In questo caso si passa all'istanza di Gestione API tramite il menu delle risorse portale di Azure, solo per dimostrare che entrambi gli approcci sono disponibili.

  1. Nel menu della risorsa di Azure o nella home page selezionare Tutte le risorse. Viene visualizzato il riquadro Tutte le risorse.

  2. Ordinare le risorse in base al tipo e quindi selezionare il servizio Gestione API di OnlineStore. Viene visualizzato il riquadro del servizio Gestione API per OnlineStore.

  3. Nel menu, in API selezionare API. Il riquadro API mostra le opzioni per la definizione di una nuova API.

  4. In Create from Azure resource (Crea da risorsa di Azure) selezionare App per le funzioni.

    Screenshot of the Add a New API screen with a callout highlighting the Azure Function App option.

    Viene visualizzata la finestra di dialogo Crea da app per le funzioni.

  5. Per selezionare l'app per le funzioni, selezionare Sfoglia. Viene visualizzato il riquadro Importa funzioni di Azure.

  6. Nel campo Configura le impostazioni necessarie selezionare Seleziona.

    Screenshot of the Import Azure Functions dialog box with Configure required settings field and Select button highlighted.(.. /media/5-import-azure-function-app-03-expanded.png#lightbox)

    Viene visualizzato il riquadro Seleziona app per le funzioni di Azure.

  7. Selezionare OrderFunctionNNNNNNN, quindi Seleziona. Il riquadro Importa Funzioni di Azure viene visualizzato nuovamente con l'app per le funzioni OrderDetails configurata.

  8. Assicurarsi che OrderDetails sia selezionato e quindi, nella parte inferiore della pagina, selezionare Seleziona per aggiungere la funzione. Viene visualizzata la finestra di dialogo Crea da app per le funzioni.

  9. Sostituire il valore nel campo Suffisso dell'URL dell'API con orders. Si noti che questa modifica aggiorna l'URL di base. Selezionare Crea per creare l'API.

    Screenshot of the Create from Function App dialog populated with details of the Orders function.

    Il servizio Gestione API di OnlineStore mostra la scheda Progetta con tutte le API disponibili (GET, POST) per OrderDetails.

Testare l'endpoint ordini del negozio online nel portale

Dopo aver aggiunto OrderDetails all'API, è possibile testarlo usando gli strumenti di Gestione API nella portale di Azure.

  1. Nella scheda di progettazione dell'API OrderFunctionNNNN, in Tutte le operazioni selezionare GET OrderDetails e quindi selezionare la scheda Test.

  2. Nella sezione Parametri query selezionare Aggiungi parametro e immettere il nome nel campo NOME e Chiba e nel campo VALORE. Selezionare Invia.

  3. La scheda del messaggio di risposta HTTP mostra che la richiesta HTTP ha avuto esito positivo (HTTP/1.1/ 200 OK), insieme a un oggetto JSON che mostra un ID ordine, insieme al nome del cliente, al prezzo totale dell'ordine e allo stato di spedizione.

  4. Scorrere fino alla sezione richiesta HTTP; si noti che la richiesta è stata inviata a un sottodominio e a una sottodirectory all'interno del dominio azure-api.net. Questa posizione differisce dal dominio host azurewebsites.net.

Testare l'API combinata

È possibile usare lo strumento da riga di comando curl per inviare le richieste all'API. cURL è ideale poiché è possibile includere la chiave di sottoscrizione corretta con una richiesta. Per le richieste è necessario anche il percorso dell'API che è ospitata in Gestione API di Azure e, in questo caso, è costituita dalle funzioni Prodotti e Ordini.

  1. Nel menu della risorsa di Azure o in Home selezionare Tutte le risorse.

  2. Ordinare le risorse in base al tipo e quindi selezionare il servizio Gestione API di OnlineStore. Viene visualizzato il riquadro del servizio Gestione API per OnlineStore.

  3. Nella sezione Informazioni di base passare il puntatore del mouse sull'URL del gateway e selezionare l'icona Copia negli Appunti.

  4. Azure Cloud Shell, a destra, consente di definire alcune variabili. Eseguire il comando seguente, sostituendo il <paste URL here> segnaposto con il valore URL copiato negli Appunti e quindi premere INVIO. Questo valore definisce la variabile del gateway.

    GATEWAY_URL=<paste URL here>
    
  5. In Azure, nel menu del servizio OnlineStore Gestione API scorrere verso il basso fino all'API e selezionare Sottoscrizioni. Viene visualizzato il riquadro Sottoscrizioni per l'istanza del servizio Gestione API di OnlineStore.

  6. Per la sottoscrizione ad accesso completo predefinito, selezionare i puntini di sospensione ... all'estrema destra di tale riga e quindi selezionare Mostra/nascondi chiavi nel menu di scelta rapida. Viene visualizzata la chiave primaria e la chiave secondaria per l'API.

  7. A destra della Chiave primaria selezionare l'icona Copia negli appunti.

  8. In Cloud Shell eseguire il comando seguente, sostituendo il segnaposto con il valore negli appunti e quindi premere INVIO.

    SUB_KEY=<paste key here>
    
  9. Ora è possibile richiedere i dettagli di un ordine e di un prodotto eseguendo query sullo stesso servizio di Gestione API:

    1. Per richiedere i dettagli per un cliente che si chiama Henri, eseguire il comando seguente in Cloud Shell:

       curl -X GET "$GATEWAY_URL/orders/OrderDetails?name=Henri" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      La risposta contiene un blocco di codice JSON con i dettagli dell'ordine che indicano che Order 56224 è stato spedito a Pascale Henri. È anche possibile provare il comando con i nomi Chiba e Barriclough per ottenere risultati diversi.

    2. Per richiedere i dettagli di un prodotto con un ID pari a 2, eseguire il comando seguente in Cloud Shell:

       curl -X GET "$GATEWAY_URL/products/ProductDetails?id=2" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      La risposta contiene un blocco di codice JSON con i dettagli di un prodotto. È anche possibile provare il comando con ID pari a 1 e 3 per risultati diversi.

Si noti che è ora possibile chiamare entrambe le funzioni tramite gli endpoint all'interno del dominio azure-api.net (come definito da GATEWAY_URL), che è il dominio usato da Gestione API di Azure. In altri moduli di Learn è possibile apprendere come applicare criteri, impostazioni di sicurezza, cache esterne e altre funzionalità alle funzioni in un gateway di Gestione API. Il gateway offre un punto di controllo centrale in cui è possibile gestire più microservizi senza alterare il codice.