Personalizzare un endpoint HTTP in Funzioni di Azure

Questo articolo illustra come creare API altamente scalabili con Funzioni di Azure personalizzando un trigger HTTP per gestire azioni specifiche nella progettazione dell'API. Funzioni di Azure include una raccolta di trigger e associazioni HTTP predefiniti, che semplificano la creazione di un endpoint in vari linguaggi, tra cui Node.js, C# e altro ancora. Si prepara anche a espandere l'API integrandola con Funzioni di Azure proxy e configurando API fittizie. Poiché queste attività vengono eseguite nell'ambiente di calcolo serverless di Funzioni, non è necessario preoccuparsi del ridimensionamento delle risorse. È invece possibile concentrarsi solo sulla logica dell'API.

Importante

I proxy di Funzioni di Azure sono una funzionalità legacy per le versioni da 1.x a 3.x del runtime di Funzioni di Azure. Il supporto per i proxy può essere riabilitato nella versione 4.x per aggiornare correttamente le app per le funzioni alla versione di runtime più recente. Appena possibile, è consigliabile passare all'integrazione delle app per le funzioni con Azure Gestione API. Gestione API consente di sfruttare un set di funzionalità più completo per definire, proteggere, gestire e monetizzare le API basate su Funzioni. Per altre informazioni, vedere Integrazione di Gestione API.

Per informazioni su come riabilitare il supporto dei proxy in Funzioni versione 4.x, vedere Riabilitare i proxy in Funzioni v4.x.

Prerequisiti

  • Strumento di test HTTP che protegge i dati. Per altre informazioni, vedere Strumenti di test HTTP.

Questo articolo usa come punto di partenza le risorse create in Creare la prima funzione nella portale di Azure. Se queste procedure non sono state ancora completate, completarle ora per creare l'app per le funzioni.

Dopo aver creato questa app per le funzioni, è possibile seguire le procedure descritte in questo articolo.

Accedere ad Azure

Accedere al portale di Azure con il proprio account Azure.

Personalizzare la funzione HTTP

Per impostazione predefinita, si configura la funzione trigger HTTP per accettare qualsiasi metodo HTTP. In questa sezione si modifica la funzione per rispondere solo alle richieste GET con /api/hello. È possibile usare l'URL predefinito, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>:

  1. Accedere alla funzione nel portale di Azure. Selezionare Integrazione nel menu a sinistra e quindi HTTP (req) in Trigger.

    Screenshot che mostra come modificare le impostazioni del trigger HTTP di una funzione.

  2. Usare le impostazioni del trigger HTTP come specificato nella tabella seguente.

    Campo Valore di esempio Descrizione
    Modello di route hello Determina quale route viene usata per chiamare questa funzione
    Livello di autorizzazione Anonimo Facoltativo: rende una funzione accessibile senza una chiave API
    Metodi HTTP selezionati GET Consente di usare solo i metodi HTTP selezionati per chiamare questa funzione

    Poiché un'impostazione globale gestisce il prefisso del /api percorso di base nel modello di route, non è necessario impostarlo qui.

  3. Seleziona Salva.

Per altre informazioni sulla personalizzazione delle funzioni HTTP, vedere Funzioni di Azure panoramica dei trigger e delle associazioni HTTP.

Testare l'API

Testare quindi la funzione per vedere come funziona con la nuova superficie API:

  1. Nella pagina Funzione selezionare Codice e test dal menu a sinistra.

  2. Selezionare Recupera URL funzione dal menu in alto e copiare l'URL. Verificare che la funzione usi ora il /api/hello percorso.

  3. Copiare l'URL in una nuova scheda del browser o nel client REST preferito. I browser usano GET per impostazione predefinita.

  4. Aggiungere parametri alla stringa di query nell'URL. Ad esempio: /api/hello/?name=John.

  5. Premere INVIO per confermare il funzionamento della funzione. Verrà visualizzata la risposta "Hello John".

  6. È anche possibile chiamare l'endpoint con un altro metodo HTTP per verificare che la funzione non venga eseguita. Per i metodi HTTP diversi da GET, è necessario usare uno strumento di test HTTP sicuro.

Panoramica dei proxy

Nella sezione successiva l'API viene visualizzata tramite un proxy. Funzioni di Azure proxy consentono di inoltrare richieste ad altre risorse. Si definisce un endpoint HTTP come si farebbe con un trigger HTTP. Tuttavia, invece di scrivere codice da eseguire quando viene chiamato tale endpoint, si fornisce un URL a un'implementazione remota. In questo modo è possibile comporre più origini API in una singola superficie API, che è più semplice da usare per i client ed è utile se si vuole creare l'API come microservizi.

Un proxy può puntare a qualsiasi risorsa HTTP, ad esempio:

Per altre informazioni sui proxy Funzioni di Azure, vedere [Usare proxy legacy].

Nota

Funzioni di Azure proxy è disponibile in Funzioni di Azure versioni da 1.x a 3.x.

Creare il primo proxy

In questa sezione viene creato un nuovo proxy, che funge da front-end per l'API complessiva.

Configurare l'ambiente front-end

Ripetere i passaggi descritti in Creare un'app per le funzioni per creare una nuova app per le funzioni in cui si crea il proxy. L'URL di questa nuova app funge da front-end per l'API e l'app per le funzioni modificata in precedenza funge da back-end:

  1. Passare alla nuova app per le funzioni front-end nel portale.

  2. Espandere Impostazioni e quindi selezionare Variabili di ambiente.

  3. Selezionare la scheda Impostazioni app, in cui vengono archiviate le coppie chiave/valore.

  4. Selezionare + Aggiungi per creare una nuova impostazione. Immettere HELLO_HOST per Nome e impostarne Value sull'host dell'app per le funzioni back-end, ad esempio <YourBackendApp>.azurewebsites.net.

    Questo valore fa parte dell'URL copiato in precedenza quando è stata testata la funzione HTTP. In seguito si fa riferimento a questa impostazione nella configurazione.

    Nota

    È consigliabile usare le impostazioni dell'app per la configurazione host per impedire una dipendenza dell'ambiente hardcoded per il proxy. Usare le impostazioni dell'app significa che è possibile spostare la configurazione del proxy tra ambienti e saranno applicate le impostazioni dell'app specifiche dell'ambiente.

  5. Selezionare Applica per salvare la nuova impostazione. Nella scheda Impostazioni app selezionare Applica e quindi selezionare Conferma per riavviare l'app per le funzioni.

Creare un proxy nel front-end

  1. Tornare all'app per le funzioni front-end nel portale.

  2. Nel menu a sinistra espandere Funzioni, selezionare Proxy e quindi selezionare Aggiungi.

  3. Nella pagina Nuovo proxy usare le impostazioni nella tabella seguente e quindi selezionare Crea.

    Campo Valore di esempio Descrizione
    Name HelloProxy Nome descrittivo utilizzato solo per la gestione
    Modello di route /api/remotehello Determina quale route viene usata per chiamare questo proxy
    URL back-end https://%HELLO_HOST%/api/hello Specifica l'endpoint a cui la richiesta deve essere trasmessa tramite proxy

    Screenshot che mostra le impostazioni nella pagina Nuovo proxy.

    Poiché Funzioni di Azure proxy non forniscono il prefisso del /api percorso di base, è necessario includerlo nel modello di route. La %HELLO_HOST% sintassi fa riferimento all'impostazione dell'app creata in precedenza. L'URL risolto punta alla funzione originale.

  4. Provare il nuovo proxy copiando l'URL del proxy e testandolo nel browser o con il client HTTP preferito:

    • Per una funzione anonima, usare : https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • Per una funzione con autorizzazione, usare : https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Creare un'API fittizia

Successivamente, si usa un proxy per creare un'API fittizia per la soluzione. Questo proxy consente lo stato di avanzamento dello sviluppo client, senza dover implementare completamente il back-end. Più avanti nello sviluppo, è possibile creare una nuova app per le funzioni che supporti questa logica e reindirizzarvi il proxy:

  1. Per creare questa API fittizia, creare un nuovo proxy, questa volta usando servizio app Editor. Per iniziare, passare all'app per le funzioni nel portale di Azure. Selezionare Funzionalità della piattaforma e quindi selezionare servizio app Editor in Strumenti di sviluppo.

    L'editor servizio app viene aperto in una nuova scheda.

  2. Selezionare proxies.json nel riquadro sinistro. Questo file archivia la configurazione per tutti i proxy. Se si usa uno dei metodi di distribuzione di Funzioni, questo file viene mantenuto nel controllo del codice sorgente. Per altre informazioni su questo file, vedere Configurazione avanzata dei proxy.

    Il file proxies.json dovrebbe essere visualizzato come segue:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            }
        }
    }
    
  3. Aggiungere l'API fittizia. Sostituire il file proxies.json con il codice seguente:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            },
            "GetUserByName" : {
                "matchCondition": {
                    "methods": [ "GET" ],
                    "route": "/api/users/{username}"
                },
                "responseOverrides": {
                    "response.statusCode": "200",
                    "response.headers.Content-Type" : "application/json",
                    "response.body": {
                        "name": "{username}",
                        "description": "Awesome developer and master of serverless APIs",
                        "skills": [
                            "Serverless",
                            "APIs",
                            "Azure",
                            "Cloud"
                        ]
                    }
                }
            }
        }
    }
    

    Questo codice aggiunge un nuovo proxy, GetUserByName, che omette la backendUri proprietà . Anziché chiamare un'altra risorsa, modifica la risposta predefinita da Funzioni di Azure proxy usando un override della risposta. È anche possibile usare gli override di richiesta e risposta con un URL back-end. Questa tecnica è utile quando si esegue il proxy a un sistema legacy, in cui potrebbe essere necessario modificare intestazioni, parametri di query e così via. Per altre informazioni sulle sostituzioni di richiesta e risposta, vedere Modificare richieste e risposte.

  4. Testare l'API fittizia chiamando l'endpoint <YourProxyApp>.azurewebsites.net/api/users/{username} con un browser o il client REST preferito. Sostituire {username} con un valore stringa che rappresenta un nome utente.

In questo articolo si è appreso come creare e personalizzare un'API con Funzioni di Azure. Si è anche appreso come riunire più API, tra cui API fittizie, come superficie api unificata. È possibile usare queste tecniche per creare API di qualsiasi complessità, il tutto durante l'esecuzione del modello di calcolo senza server fornito da Funzioni di Azure.

Per altre informazioni sullo sviluppo dell'API: