Informazioni su API Gateway
Oggi i servizi basati sul web offrono una vasta gamma di funzionalità, da servizi di mappe, meteo e immagini a giochi, aste e molti altri tipi di servizi. I fornitori di servizi hanno a disposizione 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 fornitore di servizi 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 servizi sulla Google Cloud Platform (GCP), hai a disposizione molte opzioni per la loro implementazione, ad esempio le funzioni Cloud Run, Cloud Run e l'ambiente standard App Engine. La flessibilità di Google Cloud ti consente di scegliere l'architettura di backend corretta per i requisiti del 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 può effettuare una richiesta di servizio.
Esporre i servizi pubblicamente sul web può essere complicato. Per avere successo, un fornitore di servizi deve:
- Autentica l'accesso al servizio
- Trasporto sicuro dei dati tra i client e il servizio
- Proteggere il servizio da attacchi dannosi
- Scala il servizio in base all'aumento o alla diminuzione dell'utilizzo
- Fornire al team di operazioni di backend un modo per monitorare e tenere traccia dell'utilizzo del servizio
- Monitora 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 una sfida per gli sviluppatori di app. Gli sviluppatori non devono solo conoscere e comprendere ogni interfaccia di servizio, ma devono anche monitorare i diversi servizi per rilevare eventuali modifiche, quindi aggiornare e eseguire nuovamente il deployment delle app, se necessario.
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
- Ti consente di modificare l'implementazione del servizio di backend senza influire sull'API pubblica
- Ti consente di sfruttare le funzionalità di scalabilità, monitoraggio e sicurezza integrate nella Google Cloud Platform (GCP)
La seguente immagine mostra gli sviluppatori di app che inviano richieste ai tuoi servizi di backend tramite API Gateway:
Con 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 API su API Gateway, puoi aggiornare il servizio di backend o addirittura spostarlo da un'architettura all'altra senza dover modificare l'API. Finché l'API del tuo servizio rimane coerente, gli sviluppatori di app non dovranno modificare le app di cui è stato eseguito il deployment a causa di modifiche sottostanti al tuo 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à necessarie per l'elaborazione di 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 facilmente funzionalità o dati di un'altra applicazione. Definendo punti di contatto stabili, semplici e ben documentati, le API consentono agli sviluppatori di accedere e riutilizzare facilmente la logica di applicazione creata da altri sviluppatori.
Ad esempio, la tabella seguente 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 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 l'ID del libro. |
Dati di risposta | { "title" : "book_title", "author" : "author_name", "published" : "publish_date" } |
Oggetto JSON contenente i dettagli del libro. |
Codice di risposta | 200 | Richiesta eseguita correttamente. |
Utilizzando queste informazioni, puoi inviare la seguente richiesta cURL a questa API per ottenere informazioni su un libro:
curl -X GET https://www.mybooksapi.com/books/info?isbn=0385504217
Poiché questo servizio ha un'API ben definita, inclusa una descrizione dei formati di dati e dei codici di risposta HTTP, lo sviluppatore di 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 di libri potrebbe essere aggiornata per aggiungere ulteriori parametri di ricerca, come title
o author
, oppure modificare il JSON della risposta per aggiungere ulteriori informazioni sul libro.
Definizione di un'API
Definisci un'API di cui hai eseguito il deployment in API Gateway come specifica OpenAPI 2.0. I componenti chiave di una definizione di API includono:
- L'URL o il punto di contatto del servizio di backend
- Il formato dei 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:
Eseguire il deployment di una configurazione API in API Gateway
Per creare l'API, esegui il deployment della configurazione API in API Gateway.
Utilizza il comando gcloud
per eseguire il deployment della configurazione API:
Una volta eseguita il deployment della configurazione API, i client possono effettuare chiamate REST all'API.
Gestione di un'API
Una volta eseguiti il deployment e l'avvio, puoi monitorare l'attività dell'API, ad esempio le metriche e i log di utilizzo. Quando un client invia una richiesta alla tua API, API Gateway registra informazioni sulla richiesta e sulla risposta. API Gateway monitora anche la latenza, il traffico e gli errori.
Nel tempo, potresti voler aggiornare un'API di cui è stato eseguito il deployment per aggiungere nuove funzionalità, migliorare le prestazioni o correggere i problemi relativi all'API. Per aggiornare un'API di cui è stato eseguito il deployment, è sufficiente aggiornare la specifica OpenAPI per la definizione dell'API, quindi caricare e eseguire nuovamente il deployment dell'API.
Controllo dell'accesso all'API
API Gateway ti consente di configurare l'API in modo che richieda l'autenticazione prima che il client possa accedervi. Attualmente, API Gateway supporta lo stesso meccanismo di autenticazione e la stessa sintassi utilizzati da Cloud Endpoints, tra cui:
Puoi anche utilizzare la console di Google Cloud Platform per condividere la tua API con altri sviluppatori in modo che possano attivarla 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 ulteriori informazioni, consulta la guida all'autenticazione Google Cloud.