Condividi tramite


Configurare lo sviluppo locale per le app Web statiche di Azure

Quando viene pubblicato nel cloud, un sito App Web statiche di Azure collega molti servizi che interagiscono come se fossero la stessa applicazione. Tali servizi includono:

  • App Web statica
  • API Funzioni di Azure
  • Servizi di autenticazione e autorizzazione
  • Servizi di routing e configurazione

Questi servizi devono comunicare tra loro e App Web statiche di Azure gestisce automaticamente questa integrazione nel cloud.

Tuttavia, quando si esegue l'applicazione in locale, questi servizi non vengono associati automaticamente.

Per offrire un'esperienza simile a quella che si ottiene in Azure, l'interfaccia della riga di comando di App Web statiche di Azure offre i servizi seguenti:

  • Un server del sito statico locale
  • Proxy al server di sviluppo del framework front-end
  • Proxy per gli endpoint API, disponibile tramite Funzioni di Azure Core Tools
  • Un server di autenticazione fittizia e autorizzazione
  • Imposizione delle impostazioni di configurazione e route locali

Nota

Spesso i siti compilati con un framework front-end richiedono un'impostazione di configurazione proxy per gestire correttamente le richieste nella api route. Quando si usa l'interfaccia della riga di comando di App Web statiche di Azure il valore del percorso proxy è /apie senza l'interfaccia della riga di comando il valore è http://localhost:7071/api.

Funzionamento

Il grafico seguente mostra come vengono gestite le richieste in locale.

Diagram showing the Azure Static Web App CLI request and response flow.

Importante

Passare a per accedere all'applicazione http://localhost:4280 servita dall'interfaccia della riga di comando.

  • Le richieste effettuate alla porta 4280 vengono inoltrate al server appropriato a seconda del tipo di richiesta.

  • Le richieste di contenuto statico, ad esempio HTML o CSS, vengono gestite dal server di contenuto statico dell'interfaccia della riga di comando interno o dal server framework front-end per il debug.

  • Le richieste di autenticazione e autorizzazione vengono gestite da un emulatore, che fornisce un profilo di identità fittizio all'app.

  • Il runtimedi Functions Core Tools 1 gestisce le richieste all'API del sito.

  • Le risposte di tutti i servizi vengono restituite al browser come se fossero tutte una singola applicazione.

Dopo aver avviato l'interfaccia utente e le app per le API Funzioni di Azure in modo indipendente, avviare l'interfaccia della riga di comando App Web statiche e puntare alle app in esecuzione usando il comando seguente:

swa start http://localhost:<DEV-SERVER-PORT-NUMBER> --api-location http://localhost:7071

Facoltativamente, se si usa il swa init comando , l'interfaccia della riga di comando App Web statiche esamina il codice dell'applicazione e compila un file di configurazione swa-cli.config.json per l'interfaccia della riga di comando. Quando si usa il file swa-cli.config.json , è possibile eseguire swa start per avviare l'applicazione in locale.

1 Gli Funzioni di Azure Core Tools vengono installati automaticamente dall'interfaccia della riga di comando se non sono già presenti nel sistema.

L'articolo seguente illustra in dettaglio i passaggi per l'esecuzione di un'applicazione basata su nodi, ma il processo è lo stesso per qualsiasi linguaggio o ambiente.

Prerequisiti

  • Sito di App Web statiche di Azure esistente: se non ne hai uno, inizia con l'app starter vanilla-api.
  • Node.js con npm: eseguire la versione Node.js LTS, che include l'accesso a npm.
  • Visual Studio Code: usato per il debug dell'applicazione API, ma non necessario per l'interfaccia della riga di comando.

Attività iniziali

Aprire un terminale per la cartella radice del sito di App Web statiche di Azure esistente.

  1. Installare l'interfaccia della riga di comando .

    npm install -D @azure/static-web-apps-cli
    

    Suggerimento

    Se si vuole installare l'interfaccia della riga di comando di SWA a livello globale, usare -g al posto di -D. È tuttavia consigliabile installare SWA come dipendenza di sviluppo.

  2. Compilare l'app, se richiesto dall'applicazione.

    Eseguire npm run buildo il comando equivalente per il progetto.

  3. Inizializzare il repository per l'interfaccia della riga di comando.

    swa init
    

    Rispondere alle domande poste dall'interfaccia della riga di comando per verificare che le impostazioni di configurazione siano corrette.

  4. Avviare l'interfaccia della riga di comando.

    swa start
    
  5. Passare a http://localhost:4280 per visualizzare l'app nel browser.

Altri modi per avviare l'interfaccia della riga di comando

Descrizione Comando Commenti
Gestire una cartella specifica swa start ./<OUTPUT_FOLDER_NAME> Sostituire <OUTPUT_FOLDER_NAME> con il nome della cartella di output.
Usare un server di sviluppo framework in esecuzione swa start http://localhost:3000 Questo comando funziona quando si dispone di un'istanza dell'applicazione in esecuzione nella porta 3000. Aggiornare il numero di porta se la configurazione è diversa.
Avviare un'app per le funzioni in una cartella swa start ./<OUTPUT_FOLDER_NAME> --api-location ./api Sostituire <OUTPUT_FOLDER_NAME> con il nome della cartella di output. Questo comando prevede che l'API dell'applicazione disponga di file nella api cartella . Aggiornare questo valore se la configurazione è diversa.
Usare un'app per le funzioni in esecuzione swa start ./<OUTPUT_FOLDER_NAME> --api-location http://localhost:7071 Sostituire <OUTPUT_FOLDER_NAME> con il nome della cartella di output. Questo comando prevede che l'applicazione Funzioni di Azure sia disponibile tramite la porta 7071. Aggiornare il numero di porta se la configurazione è diversa.

Emulazione di autorizzazione e autenticazione

L'interfaccia della riga di comando App Web statiche emula il flusso di sicurezza implementato in Azure. Quando un utente accede, è possibile definire un profilo di identità falso restituito all'app.

Ad esempio, quando si tenta di passare a /.auth/login/github, viene restituita una pagina che consente di definire un profilo di identità.

Nota

L'emulatore funziona con qualsiasi provider di sicurezza, non solo con GitHub.

Local authentication and authorization emulator

L'emulatore fornisce una pagina che consente di specificare i valori dell'entità client seguenti:

Valore Descrizione
Nome utente Nome dell'account associato al provider di sicurezza. Questo valore viene visualizzato come userDetails proprietà nell'entità client e viene generato automaticamente se non si specifica un valore.
ID utente Valore generato automaticamente dall'interfaccia della riga di comando.
ruoli Elenco di nomi di ruolo, in cui ogni nome si trova in una nuova riga.
Richieste Elenco di attestazioni utente, in cui ogni nome si trova in una nuova riga.

Dopo aver eseguito l'accesso:

  • È possibile usare l'endpoint /.auth/me o un endpoint di funzione per recuperare l'entità client dell'utente.

  • Passando a /.auth/logout cancella l'entità client e disconnette l'utente fittizio.

Debug

Esistono due contesti di debug in un'app Web statica. Il primo è per il sito di contenuto statico e il secondo è per le funzioni API. Il debug locale è possibile consentendo all'interfaccia della riga di comando di App Web statiche di usare i server di sviluppo per uno o entrambi questi contesti.

La procedura seguente illustra uno scenario comune che usa server di sviluppo per entrambi i contesti di debug.

  1. Avviare il server di sviluppo del sito statico. Questo comando è specifico del framework front-end in uso, ma spesso si presenta sotto forma di comandi come npm run build, npm starto npm run dev.

  2. Aprire la cartella dell'applicazione API in Visual Studio Code e avviare una sessione di debug.

  3. Avviare l'interfaccia della riga di comando App Web statiche usando il comando seguente.

    swa start http://localhost:<DEV-SERVER-PORT-NUMBER> --appDevserverUrl http://localhost:7071
    

    Sostituire <DEV_SERVER_PORT_NUMBER> con il numero di porta del server di sviluppo.

Gli screenshot seguenti mostrano i terminali per uno scenario di debug tipico:

Il sito del contenuto statico è in esecuzione tramite npm run dev.

Static site development server

L'applicazione API Funzioni di Azure esegue una sessione di debug in Visual Studio Code.

Visual Studio Code API debugging

L'interfaccia della riga di comando di App Web statiche viene avviata usando entrambi i server di sviluppo.

Azure Static Web Apps CLI terminal

Le richieste che passano attraverso la porta 4280 vengono ora instradate al server di sviluppo di contenuti statici o alla sessione di debug dell'API.

Per altre informazioni sui diversi scenari di debug, con indicazioni su come personalizzare porte e indirizzi del server, vedere il repository dell'interfaccia della riga di comando di App Web statiche di Azure.

Configurazione di debug di esempio

Visual Studio Code usa un file per abilitare le sessioni di debug nell'editor. Se Visual Studio Code non genera automaticamente un file launch.json , è possibile inserire la configurazione seguente in vscode/launch.json.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach to Node Functions",
            "type": "node",
            "request": "attach",
            "port": 9229,
            "preLaunchTask": "func: host start"
        }
    ]
}

Passaggi successivi