Informazioni su API Gateway
Oggi i servizi basati sul web offrono una grande varietà di funzionalità, che vanno dai servizi di mappe, meteo e immagini a giochi, aste e molti altri tipi di servizi. I fornitori di servizi hanno molte opzioni per implementare, eseguire il deployment e gestire i propri servizi. Ad esempio, un servizio potrebbe essere sviluppato in Java o .NET, mentre un altro utilizza Node.js.
Anche le implementazioni di backend possono variare per un singolo fornitore di servizi. Un service provider potrebbe avere servizi legacy implementati utilizzando un'architettura e nuovi servizi implementati utilizzando un'architettura completamente diversa.
Indipendentemente dall'implementazione, tutti i servizi basati sul web richiedono un modo per renderli disponibili agli sviluppatori di app. Spesso questi servizi vengono esposti come un insieme di endpoint HTTP. A seconda del servizio, l'endpoint potrebbe anche restituire dati, formattati come XML o JSON, all'app client.
Informazioni sui servizi Google Cloud
Quando sviluppi i tuoi servizi su Google Cloud, hai molte opzioni per implementare i servizi, come Cloud Run Functions, Cloud Run e l'ambiente standard di App Engine. La flessibilità di Google Cloud ti consente di scegliere l'architettura di backend corretta per i requisiti del tuo servizio.
Gli sviluppatori di app sono i clienti dei servizi di backend. Gli sviluppatori di app utilizzano i tuoi servizi per implementare app per dispositivi mobili o tablet, tramite app in esecuzione in un browser o tramite qualsiasi altro tipo di app che possa effettuare una richiesta di servizio.
L'esposizione pubblica dei servizi sul web può essere difficile. Per avere successo, un fornitore di servizi deve:
- Autenticare l'accesso al servizio
- Trasporto sicuro dei dati tra i client e il servizio
- Proteggere il servizio da attacchi dannosi
- Scalare il servizio man mano che l'utilizzo aumenta o diminuisce
- Fornire al team di operazioni di backend un modo per monitorare e tenere traccia dell'utilizzo del servizio
- Monitorare l'utilizzo per fornire dati di fatturazione accurati
Inoltre, se i tuoi servizi utilizzano interfacce e protocolli diversi, l'accesso a questi servizi può essere difficile per gli sviluppatori di app. Gli sviluppatori non solo devono imparare e comprendere ogni interfaccia di servizio, ma devono anche monitorare i diversi servizi per rilevare eventuali modifiche, quindi aggiornare e ripetere il deployment delle app in base alle necessità.
API Gateway
API Gateway ti consente di fornire un accesso sicuro ai tuoi servizi tramite un'API REST ben definita e coerente in tutti i tuoi servizi, indipendentemente dall'implementazione del servizio. Un'API coerente:
- Consente agli sviluppatori di app di utilizzare facilmente i tuoi servizi
- Consente di modificare l'implementazione del servizio di backend senza influire sull'API pubblica
- Consente di sfruttare le funzionalità di scalabilità, monitoraggio e sicurezza integrate in Google Cloud
L'immagine seguente mostra gli sviluppatori di app che effettuano richieste ai tuoi servizi di backend tramite API Gateway:
Utilizzando API Gateway, gli sviluppatori di app utilizzano le tue API REST per implementare le app. Poiché tutte le API sono ospitate su API Gateway, gli sviluppatori di app vedono un'interfaccia coerente in tutti i servizi di backend.
Se esegui il deployment delle tue API su API Gateway, puoi aggiornare il servizio di backend o persino spostarlo da un'architettura a un'altra senza dover modificare l'API. Se l'API del tuo servizio rimane coerente, gli sviluppatori di app non dovranno modificare le app implementate a causa di modifiche sottostanti al backend.
API Gateway è un sistema di gestione delle API distribuito che fornisce anche hosting, logging, monitoraggio e altre funzionalità per aiutarti a creare, condividere, gestire e proteggere le tue API. API Gateway è integrato in modo nativo con Google Cloud e gestisce tutte le attività coinvolte nell'elaborazione delle chiamate API simultanee, tra cui gestione del traffico, autorizzazione e monitoraggio.
Che cos'è un'API?
Un'API è un'interfaccia che consente a un'applicazione di utilizzare funzionalità o dati di un'altra applicazione. Definendo punti di ingresso stabili e ben documentati, le API consentono agli sviluppatori di accedere e riutilizzare la logica dell'applicazione creata da altri sviluppatori.
Ad esempio, la seguente tabella descrive un esempio di API REST che potrebbe restituire informazioni su un libro:
| Proprietà | Valore | Descrizione |
|---|---|---|
| URL | https://www.mybooksapi.com/books/info | Restituisce il titolo, l'autore e la data di pubblicazione di un libro in base al suo codice ISBN (International Standard Book Number). |
| Verbo HTTP | GET | Invia una richiesta GET all'API. |
| Parametro di query | isbn
|
Passa il numero ISBN del libro, ovvero il suo ID. |
| Dati di risposta | {
"title" : "book_title",
"author" : "author_name",
"published" : "publish_date"
} |
Oggetto JSON contenente i dettagli del libro. |
| Codice di risposta | 200 | Richiesta riuscita. |
Di seguito è riportato un esempio di richiesta curl che potrebbe essere utilizzata per ottenere informazioni su un libro con il numero ISBN specificato:
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
Poiché questo servizio dispone di un'API ben definita, inclusa una descrizione dei formati dei dati e dei codici di risposta HTTP, lo sviluppatore dell'app non deve sapere nulla dell'implementazione sottostante del servizio di backend.
Poiché le applicazioni che utilizzano le API sono sensibili alle modifiche, le API implicano anche un contratto tra i fornitori e i consumatori di API. Il contratto garantisce che nel tempo l'API cambierà in modo prevedibile. Ad esempio, l'API Books potrebbe essere aggiornata per aggiungere parametri di ricerca aggiuntivi, come title o author, o modificare il JSON della risposta per aggiungere ulteriori informazioni sul libro.
Definisci un'API
Definisci un'API di cui è stato eseguito il deployment su API Gateway come specifica OpenAPI 2.0. I componenti chiave di una definizione API includono:
- L'URL o il punto di ingresso del servizio di backend
- Il formato dei dati di tutti i dati trasmessi in una richiesta all'API
- Il formato dei dati restituiti dal servizio nella risposta dell'API
- Il meccanismo di autenticazione utilizzato per controllare l'accesso al servizio
Dopo aver definito l'API, utilizza l'interfaccia a riga di comando gcloud per caricarla in una configurazione API su Google Cloud:
Esegui il deployment di una configurazione API su API Gateway
Per creare l'API, esegui il deployment della configurazione API su API Gateway.
Utilizza il comando gcloud per eseguire il deployment della configurazione API:
Una volta eseguito il deployment della configurazione API, i client possono effettuare chiamate REST all'API.
Gestire un'API
Una volta eseguito il deployment e l'esecuzione, puoi monitorare l'attività dell'API, ad esempio le metriche di utilizzo e i log. Quando un client effettua una richiesta alla tua API, API Gateway registra le informazioni sulla richiesta e sulla risposta. API Gateway monitora anche latenza, traffico ed errori.
Nel tempo, potresti voler aggiornare un'API di cui è stato eseguito il deployment per aggiungere nuove funzionalità, migliorare le prestazioni o correggere problemi. Per aggiornare un'API di cui è stato eseguito il deployment, aggiorna la specifica OpenAPI per la definizione dell'API, quindi carica ed esegui nuovamente il deployment dell'API.
Controllare l'accesso API
API Gateway ti consente di configurare l'API in modo che richieda l'autenticazione prima che il client possa accedere all'API. API Gateway supporta lo stesso meccanismo e la stessa sintassi di autenticazione utilizzati da Cloud Endpoints, incluso l'utilizzo di:
Puoi anche utilizzare la Google Cloud console per condividere la tua API con altri sviluppatori, in modo che possano abilitarla e generare chiavi API per chiamarla.
Oltre a definire un meccanismo di autenticazione per verificare l'identità di un utente, la tua API deve anche decidere cosa può fare l'utente autenticato con la tua API. Per saperne di più, vedi Metodi di autenticazione di Google.