Condividi tramite


Personalizzare un endpoint HTTP in Funzioni di Azure

Questo articolo illustra come Funzioni di Azure consente di creare API altamente scalabili. Funzioni di Azure include una raccolta di trigger e associazioni HTTP predefiniti, che semplificano la creazione di un endpoint in diversi linguaggi, tra cui Node.js, C# e altro ancora. In questo articolo si personalizza un trigger HTTP per gestire azioni specifiche nella progettazione dell'API. Si preparerà anche a crescere l'API integrandola con Funzioni di Azure proxy e configurando API fittizie. Queste attività vengono eseguite sopra l'ambiente di calcolo serverless di Funzioni, quindi non è necessario preoccuparsi del ridimensionamento delle risorse. È sufficiente concentrarsi sulla logica dell'API.

Importante

Funzioni di Azure proxy è 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 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

Questo argomento usa per iniziare le risorse create in Creare la prima funzione nel portale di Azure. Se queste procedure non sono state ancora completate, completarle ora per creare l'app per le funzioni.

La funzione risultante verrà usata per il resto di questo articolo.

Accedere ad Azure

Accedere al portale di Azure con il proprio account Azure.

Personalizzare la funzione HTTP

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

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

    Personalizzazione di una funzione HTTP

  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

    Non è stato incluso il prefisso del /api percorso di base nel modello di route, perché viene gestito da un'impostazione globale.

  3. Seleziona Salva.

Per altre informazioni sulla personalizzazione delle funzioni HTTP, vedere Funzioni di Azure binding HTTP.

Testare l'API

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

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

  2. Selezionare Recupera URL funzione dal menu in alto e copiare l'URL. Verificare che ora usi 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 che funziona. Verrà visualizzata la risposta "Hello John".

  6. È anche possibile provare a chiamare l'endpoint con un altro metodo HTTP per verificare che la funzione non venga eseguita. A tale scopo, usare un client REST, ad esempio cURL, Postman o Fiddler.

Panoramica dei proxy

Nella sezione successiva verrà visualizzata l'API tramite un proxy. Proxy di Funzioni di Azure consente di inoltrare le richieste ad altre risorse. Si definisce un endpoint HTTP proprio come con il 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, facile da usare per i client, utile se si vuole creare l'API come microservizi.

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

Per altre informazioni sui proxy, vedere Uso dei proxy di Funzioni di Azure.

Nota

I proxy sono disponibili 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.

Configurazione dell'ambiente front-end

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

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

  2. Selezionare Configurazione e scegliere Impostazioni applicazione.

  3. Scorrere verso il basso fino a Impostazioni applicazione, dove vengono archiviate coppie chiave/valore e creare una nuova impostazione con la chiave HELLO_HOST. Impostare il suo valore all'host dell'app per le funzioni di back-end, ad esempio <YourBackendApp>.azurewebsites.net. Questo valore fa parte dell'URL copiato in precedenza durante il test della funzione HTTP. Si farà riferimento a questa impostazione nella configurazione in un secondo momento.

    Nota

    Le impostazioni di app sono consigliate perché la configurazione dell'host eviti una dipendenza di ambiente hard-coded 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.

  4. Seleziona Salva.

Creazione di un proxy nel front-end

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

  2. Nel menu a sinistra selezionare Proxy e quindi 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

    Creazione di un proxy

    Funzioni di Azure proxy non fornisce il prefisso del /api percorso di base, che deve essere incluso nel modello di route. La %HELLO_HOST% sintassi fa riferimento all'impostazione dell'app creata in precedenza. L'URL risolto punterà 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

Si userà quindi 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 supporta questa logica e reindirizzarvi il proxy.

Per creare questa API fittizia, verrà creato un nuovo proxy, questa volta usando l'editor di servizio app. Per iniziare passare all'app per le funzioni nel portale. Selezionare Funzionalità della piattaforma e in Strumenti di sviluppo trovare servizio app Editor. L'editor servizio app viene aperto in una nuova scheda.

Selezionare proxies.json nel riquadro di spostamento 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.

Se sono stati seguiti finora, il proxies.json dovrebbe essere simile al seguente:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "HelloProxy": {
            "matchCondition": {
                "route": "/api/remotehello"
            },
            "backendUri": "https://%HELLO_HOST%/api/hello"
        }
    }
}

Si aggiungerà quindi 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, senza la backendUri proprietà . Invece di chiamare un'altra risorsa, viene modificata la risposta predefinita di Proxy usando un override della risposta. Gli override di richiesta e risposta possono essere usati anche 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 sugli override di richiesta e risposta, vedere Modifica delle richieste e delle risposte.

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

Passaggi successivi

In questo articolo si è appreso come creare e personalizzare un'API in Funzioni di Azure. È stato inoltre illustrato come mettere insieme più API, incluse quelle fittizie, in una sola 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.

I riferimenti seguenti possono essere utili quando si sviluppa ulteriormente l'API: