Cloud Endpoints Frameworks fornisce funzionalità di gestione delle API paragonabili a quelle offerte da Extensible Service Proxy (ESP) per Cloud Endpoints. Endpoints Frameworks include un API Gateway integrato che intercetta tutte le richieste ed esegue gli eventuali controlli necessari, come l'autenticazione, prima di inoltrare la richiesta al backend dell'API. Quando il backend risponde, Endpoints Frameworks raccoglie e registra la telemetria. Puoi visualizzare le metriche per la tua API nella pagina Endpoints > Servizi della console Google Cloud.
Le funzionalità di gestione delle API disponibili nei framework Endpoints includono:
Affinché l'API venga gestita da Endpoints, devi eseguire il deployment di un documento OpenAPI che la descriva utilizzando la versione 2.0 della specifica OpenAPI. Questa pagina descrive come generare ed eseguire il deployment di un documento OpenAPI che consenta a Endpoints di gestire la tua API.
Se non aggiungi la gestione delle API, l'API continuerà a gestire le richieste, ma non verrà visualizzata nella pagina Endpoints > Servizi della console Google Cloud e le funzionalità fornite da Endpoints, come il logging, il monitoraggio e l'impostazione delle quote, non saranno disponibili.
Installazione e configurazione del software necessario
Se non l'hai già fatto, installa e configura Google Cloud CLI per Python e aggiungi la libreria Python di Endpoints Frameworks alla directory del progetto dell'API in modo che venga caricata con il codice dell'API al momento del deployment.
Installa e configura la gcloud CLI per Python
Installa e inizializza gcloud CLI:
Installa il componente
gcloud
che include l'estensione App Engine per Python:gcloud components install app-engine-python
Aggiorna gcloud CLI:
gcloud components update
Assicurati che l'interfaccia a riga di comando gcloud sia autorizzata ad accedere ai tuoi dati e ai tuoi servizi su Google Cloud:
gcloud auth login
Si apre una nuova scheda del browser e ti viene chiesto di scegliere un account.
Imposta il progetto predefinito sul tuo ID progetto. Sostituisci
YOUR_PROJECT_ID
con l'ID del tuo progetto Google Cloud.gcloud config set project YOUR_PROJECT_ID
Per Linux, imposta la variabile di ambiente
ENDPOINTS_GAE_SDK
sul percorso della cartella dell'SDK di App Engine:PATH_TO_CLOUD_SDK/platform/google_appengine
Sostituisci
PATH_TO_CLOUD_SDK
con 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 di Microsoft
Altri sistemi operativi: a seconda del sistema operativo, potresti dover installare strumenti di compilatore (a volte in un pacchetto chiamato
build-essential
) e/o gli header di sviluppo di Python (a volte in un pacchetto chiamatopython-dev
).
Cambia directory nella directory principale dell'API.
Crea una sottodirectory
/lib
nella directory principale dell'API:mkdir lib
Installa la libreria:
pip install -t lib google-endpoints --ignore-installed
Genera il documento OpenAPI
Dalla directory principale dell'API, genera un documento OpenAPI utilizzando gli strumenti del framework. Ad esempio:
Singolo corso
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ù corsi
Puoi elencare più classi sulla riga di comando. Endpoints genera un documento OpenAPI per ogni combinazione di nome/versione dell'API.
Se vuoi implementare più classi API con nomi diversi all'interno di un singolo servizio, devi aggiungere anche 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 a 40 caratteri, che possono essere tutti caratteri alfabetici in minuscolo o numeri, tranne che il primo carattere 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
Singolo corso
gcloud endpoints services deploy echov1openapi.json
Più corsi
Se hai più documenti OpenAPI, elencali tutti sulla 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 nomeYOUR_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 configurazione del servizio. L'ID configurazione del servizio è costituito da un timestamp seguito da un numero di revisione. Se esegui nuovamente 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, sostituendo YOUR_PROJECT_ID
con l'ID progetto
del tuo progetto Google Cloud:
gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
Puoi creare il tuo documento OpenAPI ed eseguirlo, anziché
utilizzare uno generato. Basta sostituire echov1openapi.json
sopra con il percorso del documento OpenAPI. Per ulteriori informazioni sulla scrittura di un documento OpenAPI, consulta la panoramica di OpenAPI.
Esegui nuovamente il deployment dell'API e testa
Modifica il file
app.yaml
del progetto e aggiungi una sezioneenv_variables
come segue:env_variables: ENDPOINTS_SERVICE_NAME: YOUR_PROJECT_ID.appspot.com ENDPOINTS_SERVICE_VERSION: YOUR_SERVICE_VERSION
Sostituisci
YOUR_PROJECT_ID
con il tuo ID progetto Google Cloud eYOUR_SERVICE_VERSION
con l'ID configurazione del servizio della sezione precedente. Con questa aggiunta al fileapp.yaml
, Endpoints gestisce l'API dopo il redeployment dell'applicazione.Esegui nuovamente il deployment dell'applicazione:
gcloud app deploy
Attendi qualche istante affinché il deployment vada a buon fine, ignorando i messaggi di avviso. Al termine del deployment, viene visualizzato un messaggio simile al seguente:
File upload done. Updating service [default]...done.
Verifica il corretto riavvolgimento, 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=2
Sostituisci
echo
con il nome della tua API.I risultati dovrebbero essere simili a quanto segue:
{ "content": "echo echo" }
Invia alcune richieste aggiuntive all'API.
Per visualizzare le metriche dell'API, apri la pagina Endpoint > Servizi nella console Google Cloud per il tuo progetto: