Esercizio - Creare un progetto di Funzioni di Azure
Per l'app Web per la lista della spesa è necessaria un'API. In questo esercizio creerai ed eseguirai la tua API usando un progetto di Funzioni di Azure. Da qui si estende l'API con una nuova funzione usando l'estensione Funzioni di Azure per Visual Studio Code.
In questo esercizio completerai i passaggi seguenti:
- Creare un ramo per prepararsi ad apportare modifiche all'app Web.
- Esplorare il progetto Azure Function.
- Creare la funzione HTTP PUT.
- Sostituire il codice iniziale della funzione con la logica per ottenere prodotti.
- Configurare l'app Web per usare un proxy per le richieste HTTP all'API.
- Eseguire l'API e l'applicazione web.
Eseguire l'app per le funzioni
Aggiungere ora un'API e connetterla all'app front-end. La api-starter cartella include un progetto di Funzioni di Azure incompleto. Quindi, andiamo a completare questa operazione ora.
Creare un ramo API
Prima di apportare modifiche a un'app, è consigliabile creare un nuovo ramo per le modifiche. Si sta per completare l'API per l'app, quindi ora è un buon momento per creare un ramo.
In Visual Studio Code aprire il riquadro comandi premendo F1.
Digitare e selezionare Git: Estrai in....
Selezionare Crea nuovo ramo.
Immettere api per il nuovo nome del ramo e premere INVIO.
È stato appena creato il ramo Git api .
Completare l'API di Funzioni di Azure
Per completare l'API, iniziare spostando il codice DELL'API iniziale in una cartella denominata api. È stato immesso questo nome di cartella per il api_location quando è stata creata l'istanza di App Web statiche.
In Visual Studio Code aprire il riquadro comandi premendo F1.
Immettere e selezionare Terminale: Crea nuovo terminale (nell'area di lavoro attiva).
Assicurarsi di essere nella cartella radice del progetto.
Eseguire il comando git seguente per rinominare la
api-startercartella inapi.git mv api-starter apiAprire il riquadro comandi premendo F1.
Digitare e selezionare Git: Commit All.
Immettere l'API del messaggio di commit e premere INVIO.
Ora viene visualizzata una cartella api nello strumento di esplorazione di Visual Studio Code. La cartella api contiene il progetto funzioni di Azure, insieme a tre funzioni.
| Cartella e file | Metodo | Itinerario |
|---|---|---|
| api/products-post | POST | products |
| api/products-put | PUT | products/:id |
| api/products-delete | ELIMINA | products/:id |
Creare la funzione HTTP PUT
L'API include delle route per modificare i prodotti nella lista della spesa, ma è priva di una route per recuperare i prodotti. Aggiungiamolo ora.
Installare l'estensione Funzioni di Azure per Visual Studio Code
È possibile creare e gestire applicazioni di Funzioni di Azure usando l'estensione Funzioni di Azure per Visual Studio Code.
Passare a Visual Studio Marketplace e installare l'estensione Funzioni di Azure per Visual Studio Code.
Quando la scheda dell’estensione viene caricata in Visual Studio Code, selezionare Installa.
Al termine dell'installazione, selezionare Ricarica.
Annotazioni
Assicurarsi di installare Azure Functions Core Tools, che consente di eseguire Funzioni di Azure in locale.
Creare la funzione
Ora estenderai l'app per le funzioni di Azure con una funzione per ottenere i prodotti.
In Visual Studio Code aprire il riquadro comandi premendo F1.
Immettere e selezionare Funzioni di Azure: Crea funzione.
Quando viene richiesto di creare una funzione, selezionare Trigger HTTP.
Immettere products-get come nome della funzione.
Selezionare Anonimo come livello di autenticazione.
Annotazioni
L'app Funzioni si trova nella api cartella , che la separa dai singoli progetti di app Web. Tutte le app Web che usano i framework front-end effettuano chiamate alla stessa API. È possibile decidere come strutturare l'applicazione, ma per questo esempio consente di visualizzarli separati.
Configurare il metodo HTTP e l'endpoint della route
Si noti che la cartella api/products-get contiene il file function.json. Questo file contiene la configurazione per la funzione.
Per convenzione, l'endpoint della route ha lo stesso nome della cartella che contiene la funzione. Poiché la funzione viene creata nella cartella products-get , l'endpoint di route viene generato come products-get, per impostazione predefinita. Tuttavia, vuoi che l'endpoint sia prodotti.
Configurare la funzione:
Aprire il file api/products-get/function.json.
Si noti che i metodi consentono sia
GETchePOST.Modificare la matrice di metodi in modo da consentire solo richieste
GET.Aggiungere una
"route": "products"voce dopo la matrice dei metodi.
La funzione viene ora attivata in una richiesta HTTP GET ai prodotti. Il function.json dovrebbe essere simile al codice seguente:
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": ["get"],
"route": "products"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
Aggiornare la logica della funzione
Il file index.js nella cartella api/products-get contiene la logica eseguita quando si effettua una richiesta HTTP alla route.
È necessario aggiornare la logica per ottenere i prodotti. La logica di accesso ai dati è disponibile nel modulo JavaScript /shared/product-data.js. Il product-data modulo espone una funzione getProducts per ottenere i prodotti per la lista degli acquisti.
Modificare ora l'endpoint della funzione in modo da restituire i prodotti:
Aprire il file api/products-get/index.js.
Sostituirne il contenuto con il codice seguente:
const data = require('../shared/product-data'); module.exports = async function (context, req) { try { const products = data.getProducts(); context.res.status(200).json(products); } catch (error) { context.res.status(500).send(error); } };
La funzione ottiene i prodotti e li restituisce con un codice di stato 200, quando ha esito positivo.
Configurare la condivisione di risorse tra origini (CORS) in locale
Non è necessario preoccuparsi di CORS quando si pubblica in App Web statiche di Azure. App Web statiche di Azure configura automaticamente l'app in modo che possa comunicare con l'API su Azure usando un proxy inverso. Tuttavia, quando l'esecuzione avviene in locale, è necessario configurare il meccanismo CORS per consentire la comunicazione tra l'app Web e l'API.
Indicare ora a Funzioni di Azure di consentire all'app Web di effettuare richieste HTTP all'API nel computer.
Creare un file denominato api/local.settings.json.
Aggiungere il contenuto seguente al file:
{ "Host": { "CORS": "http://localhost:4200" } }{ "Host": { "CORS": "http://localhost:3000" } }{ "Host": { "CORS": "http://localhost:5000" } }{ "Host": { "CORS": "http://localhost:8080" } }
Annotazioni
Il file local.settings.json è elencato nel file .gitignore e questo evita il push del file in GitHub. Il file è elencato in .gitignore perché è possibile archiviare segreti in esso che non si vuole in GitHub. Questo elenco è il motivo per cui è stato necessario creare il file quando è stato creato il repository dal modello.
Eseguire l'API
Ora è il momento di vedere l'app Web e il progetto di Funzioni di Azure lavorare insieme. Per iniziare, eseguire il progetto di Funzioni di Azure in locale seguendo questa procedura:
Annotazioni
Assicurarsi di installare Azure Functions Core Tools, che consente di eseguire Funzioni di Azure in locale.
Aprire un terminale Git e passare alla
apicartella :cd apiEseguire l'app Funzioni di Azure in locale:
npm installnpm start
Eseguire l'app Web
L'API è in esecuzione. A questo punto è necessario configurare l'app front-end per effettuare la richiesta HTTP all'API. L'app front-end viene eseguita su una porta e l'API viene eseguita su una porta diversa (7071). Ogni framework front-end può essere configurato per indirizzare le richieste HTTP a una porta in sicurezza.
Configurare la porta proxy
Configurare il proxy per l'app front-end seguendo questa procedura:
Aprire il file angular-app/proxy.conf.json.
Individuare l'impostazione
target: 'http://localhost:7071'.Notare che la porta della destinazione punta a 7071.
Aprire il file react-app/package.json.
Individuare l'impostazione
"proxy": "http://localhost:7071/",.Si noti che la porta del proxy punta a 7071.
Aprire il file svelte-app/rollup.config.js.
Individuare la riga di codice
const api = 'http://localhost:7071/api';.Si noti che la porta dell'API punta a 7071.
Aprire il file vue-app/vue.config.js.
Individuare l'impostazione
target: 'http://localhost:7071',.Notare che la porta della destinazione punta a 7071.
Eseguire l'app Web front-end
L'API è già in esecuzione sulla porta 7071. Ora, quando esegui l'app web, essa effettua le sue richieste HTTP alla tua API. Esegui la tua app web seguendo questi passaggi:
Aprire una seconda istanza del terminale Git.
Immettere quindi questo comando per passare alla cartella del framework front-end preferito:
cd angular-appcd react-appcd svelte-appcd vue-appEseguire l'applicazione client front-end:
npm startnpm startnpm run devnpm run serve
Accedi alla tua app
È arrivato il momento di osservare l'applicazione in esecuzione locale con l'API di Azure Functions.
- Passare a
http://localhost:4200.
- Passare a
http://localhost:3000.
- Passare a
http://localhost:5000.
- Passare a
http://localhost:8080.
- È stata compilata l'applicazione, che è ora in esecuzione in locale ed effettua richieste HTTP GET all'API. A questo punto, arrestare l'app e l'API in esecuzione premendo CTRL-C nei terminali.
Passaggi successivi
L'app funziona in locale e il passaggio successivo consiste nel pubblicare l'app con l'API.