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. L'app per le funzioni Products è stata aggiunta 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 strumento curl 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 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 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 dell'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.

    Codice JSON di OrderDetails con evidenziati i comandi Codice e test nel menu e Test/Esegui sulla barra dei comandi.

  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.

    Viene visualizzata la pagina per l'aggiunta di una nuova opzione di funzione.

    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 viene aggiunta la funzione Order alla risorsa di Gestione API creata nell'esercizio precedente. Nell'esercizio precedente è stata usata l'interfaccia di Gestione API dall'interfaccia dell'app per le funzioni. Ora si passa all'istanza di Gestione API tramite il menu di risorse del portale di Azure per dimostrare che sono possibili entrambi gli approcci.

  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 della schermata Add a New API (Aggiungere una nuova API) con un callout che evidenzia l'opzione App per le funzioni di Azure.

    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 della finestra di dialogo Importa funzioni di Azure con il campo Configura le impostazioni obbligatorie e il pulsante Seleziona evidenziati.(../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 di nuovo 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 come questa modifica aggiorna l'URL di base. Selezionare Crea per creare l'API.

    Screenshot della finestra di dialogo Crea da app per le funzioni popolata con i dettagli della funzione Orders.

    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, eseguirne il test usando gli strumenti di Gestione API nel 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 segnaposto <paste URL here> con il valore dell'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 Gestione API di OnlineStore scorrere verso il basso fino ad 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 mostrano che l'ordine 56224 è stato inviato a Pascale Henri. È anche possibile provare il comando con i nomi Chiba e Barriclough per 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.