Cloud Endpoints Frameworks offre funzionalità di gestione delle API paragonabili a quelle fornite da Extensible Service Proxy (ESP) per Cloud Endpoints. Endpoints Frameworks include un gateway API integrato che intercetta tutte le richieste ed esegue i controlli necessari, ad esempio l'autenticazione, prima di inoltrare la richiesta al backend API. Quando il backend risponde, Endpoints Frameworks raccoglie e segnala la telemetria. Puoi visualizzare le metriche per la tua API nella pagina Endpoint > Servizi nella consoleGoogle Cloud .
Le funzionalità di gestione delle API disponibili in Endpoints Frameworks includono:
Perché la tua API venga gestita da Endpoints, devi eseguire il deployment di un documento OpenAPI che descriva la tua API utilizzando la versione 2.0 della specifica OpenAPI. Questa pagina descrive come generare ed eseguire il deployment di un documento OpenAPI che consente a Endpoints di gestire la tua API.
Se non aggiungi la gestione API, la tua API continua a gestire le richieste, ma non viene visualizzata nella pagina Endpoints > Servizi della consoleGoogle Cloud e la funzionalità fornita da Endpoints, come logging, monitoraggio e impostazione delle quote, non è disponibile.
Installazione e configurazione del software richiesto
Se non l'hai ancora fatto, installa e configura Google Cloud CLI per Python e aggiungi la libreria Python di Endpoints Frameworks alla directory del progetto API in modo che venga caricata con il codice API al momento del deployment.
Installare e configurare gcloud CLI per Python
Installa e inizializza gcloud CLI:
Installa il componente
gcloudche include l'estensione App Engine per Python:gcloud components install app-engine-pythonAggiorna gcloud CLI:
gcloud components updateAssicurati che gcloud CLI sia autorizzata ad accedere ai tuoi dati e servizi su Google Cloud:
gcloud auth loginSi apre una nuova scheda del browser e ti viene chiesto di scegliere un account.
Imposta il progetto predefinito sull'ID progetto. Sostituisci
YOUR_PROJECT_IDcon l'ID del tuo progetto Google Cloud .gcloud config set project YOUR_PROJECT_ID
Per Linux, imposta la variabile di ambiente
ENDPOINTS_GAE_SDKsul percorso della cartella dell'SDK App Engine:PATH_TO_CLOUD_SDK/platform/google_appengine
Sostituisci
PATH_TO_CLOUD_SDKcon l'output del seguente comando:gcloud info --format="value(installation.sdk_root)"
Aggiungi la libreria Python di Endpoints Frameworks
Assicurati di poter compilare le estensioni C per Python.
Windows: è richiesto Microsoft Visual C++ 9.0 o versioni successive. Puoi scaricare il compilatore Microsoft Visual C++ per Python 2.7 dal Centro download Microsoft.
Altri sistemi operativi: a seconda del sistema operativo, potresti dover installare strumenti di compilazione (a volte in un pacchetto chiamato
build-essential) e/o le intestazioni di sviluppo Python (a volte in un pacchetto chiamatopython-dev).
Passa alla directory principale dell'API.
Crea una sottodirectory
/libnella directory principale dell'API:mkdir libInstalla la libreria:
pip install -t lib google-endpoints --ignore-installed
Generare il documento OpenAPI
Dalla directory principale dell'API, genera un documento OpenAPI utilizzando gli strumenti del framework. Ad esempio:
Singola lezione
Nel comando seguente, sostituisci YOUR_PROJECT_ID con il tuo ID progetto Google Cloud .
python lib/endpoints/endpointscfg.py get_openapi_spec main.EchoApi \
--hostname YOUR_PROJECT_ID.appspot.com
Ignora gli avvisi visualizzati.
Più classi
Puoi elencare più classi nella riga di comando. Endpoints genera un documento OpenAPI per ogni combinazione di nome/versione dell'API.
Se vuoi eseguire il deployment di più classi API con nomi API diversi nell'ambito
di un singolo servizio, devi anche aggiungere il flag --x-google-api-name.
L'attivazione di questo flag aggiunge ulteriori restrizioni ai nomi delle API. Nello specifico,
i nomi devono corrispondere all'espressione regolare [a-z][a-z0-9]{0,39}, ovvero
il nome deve essere composto da 1-40 caratteri, che possono essere tutti alfabetici
minuscoli o numeri, tranne il primo carattere, che non deve
essere un numero. Ad esempio:
Nel comando seguente, sostituisci YOUR_PROJECT_ID con il tuo ID progetto Google Cloud .
python lib/endpoints/endpointscfg.py get_openapi_spec main.FooApi main.BarApi \ --hostname YOUR_PROJECT_ID.appspot.com \ --x-google-api-name
Ignora gli avvisi visualizzati.
Endpoints utilizza il testo specificato nell'argomento hostname
come nome del servizio. Quando esegui il deployment dell'API in App Engine,
viene creata automaticamente
una voce DNS con un nome nel formato
YOUR_PROJECT_ID.appspot.com.
Esegui il deployment del documento OpenAPI
Singola lezione
gcloud endpoints services deploy echov1openapi.json
Più classi
Se hai più documenti OpenAPI, elencali tutti nella riga di comando. Ad esempio:
gcloud endpoints services deploy foov1openapi.json barv1openapi.json
La prima volta che esegui il deployment del documento o dei documenti OpenAPI, viene creato un nuovo servizio Endpoints con il nome YOUR_PROJECT_ID.appspot.com.
Al termine, viene visualizzata una riga simile alla seguente, in cui sono visualizzati l'ID configurazione del servizio e il nome del servizio:
Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
Nell'esempio precedente, 2017-02-13r0 è l'ID di configurazione del servizio. L'ID configurazione del servizio è composto da un timestamp seguito da un
numero di revisione. Se esegui di nuovo il deployment del documento OpenAPI, il numero di revisione viene incrementato nell'ID configurazione del servizio.
Se devi visualizzare di nuovo l'ID configurazione del servizio, esegui il seguente comando, ma sostituisci YOUR_PROJECT_ID con l'ID progetto del tuo progetto Google Cloud :
gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
Puoi creare e implementare il tuo documento OpenAPI anziché
utilizzarne uno generato. Basta sostituire echov1openapi.json sopra con il percorso del tuo documento OpenAPI. Per saperne di più su come scrivere un documento OpenAPI, consulta la panoramica di OpenAPI.
Esegui nuovamente il deployment dell'API e testa
Modifica il file
app.yamldel progetto e aggiungi una sezioneenv_variablescome segue:env_variables: ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION
Sostituisci
YOUR_PROJECT_IDcon l'Google Cloud ID progetto eYOUR_SERVICE_VERSIONcon l'ID configurazione del servizio della sezione precedente. Con questa aggiunta al fileapp.yaml, Endpoints gestisce l'API dopo aver eseguito nuovamente il deployment dell'applicazione.Esegui nuovamente il deployment dell'applicazione:
gcloud app deployAttendi qualche istante affinché il deployment venga completato, ignorando i messaggi di avviso. Al termine del deployment, viene visualizzato un messaggio simile al seguente:
File upload done. Updating service [default]...done.Verifica che il nuovo deployment sia stato eseguito correttamente, ad esempio utilizzando curl:
curl --request POST \ --header "Content-Type: application/json" \ --data '{"content":"echo"}' \ https://YOUR_PROJECT_ID.appspot.com/_ah/api/echo/v1/echo?n=2Sostituisci
echocon il nome della tua API.I risultati dovrebbero mostrare qualcosa di simile a:
{ "content": "echo echo" }Effettua alcune richieste aggiuntive alla tua API.
Per visualizzare le metriche API, apri la pagina Endpoint > Servizi nella console Google Cloud per il tuo progetto: