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 molte opzioni per implementare, eseguire il deployment e gestire i loro servizi. Ad esempio, un servizio potrebbe essere sviluppato in Java o .NET, mentre un altro utilizza Node.js.

Le implementazioni di backend possono variare anche per un singolo fornitore di servizi. Un fornitore di servizi potrebbe aver implementato servizi legacy 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 sono esposti come un insieme di endpoint HTTP. A seconda del servizio, l'endpoint potrebbe anche restituire dati all'app client, formattati come XML o JSON.

Informazioni sui servizi Google Cloud

Durante lo sviluppo dei servizi su Google Cloud Platform (Google Cloud), sono disponibili molte opzioni per l'implementazione dei servizi, ad esempio funzioni di Cloud Run, Cloud Run e ambiente standard di App Engine. La flessibilità di Google Cloud significa che devi scegliere l'architettura di backend corretta per i tuoi requisiti dei servizi.

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
  • Proteggere il trasporto dei dati tra i client e il servizio
  • Proteggi 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 complicato per gli sviluppatori di app. Gli sviluppatori non solo devono conoscere e comprendere l'interfaccia di ogni servizio, ma devono anche monitorare i diversi servizi per rilevare eventuali modifiche, quindi aggiornare ed eseguire nuovamente 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
  • 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 piattaforma Google Cloud (GCP)

La seguente immagine mostra gli sviluppatori di app che inviano richieste ai tuoi servizi di backend tramite API Gateway:

Effettuare richieste di servizio web tramite API Gateway.

Con API Gateway, gli sviluppatori di app utilizzano le tue API REST per implementare le app. Tutte le API sono ospitate su API Gateway, pertanto gli sviluppatori di app vedono un'interfaccia coerente in tutti i servizi di backend.

Eseguendo il deployment delle tue API in API Gateway, puoi aggiornare il servizio di backend o persino spostare il servizio da un'architettura all'altra, senza dover cambiare l'API. Finché l'API nel servizio rimane coerente, gli sviluppatori di app non dovranno modificare le app di cui è stato eseguito il deployment a causa delle modifiche sottostanti nel backend.

API Gateway è un sistema di gestione delle API distribuito che fornisce anche hosting, logging, monitoraggio e altre funzionalità per aiutarti a creare, condividere, mantenere 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 ingresso stabili, semplici e ben documentati, le API consentono agli sviluppatori di accedere facilmente alla logica dell'applicazione creata da altri e riutilizzarla.

Nella tabella che segue viene descritto 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 Effettuare una richiesta GET all'API.
Parametro di query isbn Passa il numero ISBN del libro, ovvero l'ID del libro.
Dati delle risposte
{
  "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 API sono sensibili ai cambiamenti, le API implicano anche un contratto tra i provider e i consumatori delle API. Il contratto garantisce che nel tempo l'API cambierà in modo prevedibile. Ad esempio, l'API Book potrebbe essere aggiornata per aggiungere parametri di ricerca aggiuntivi, come title o author, oppure modificare il codice JSON della risposta per aggiungere ulteriori informazioni sul libro.

Definizione di un'API

Definisci un'API di cui è stato eseguito il deployment in API Gateway come specifica OpenAPI 2.0. I componenti chiave di una definizione di API includono:

  • L'URL, o punto di ingresso, del servizio di backend
  • Il formato dei dati trasmessi per 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:

Utilizza gcloud per caricare le specifiche dell'API su Google Cloud.

Eseguire il deployment di una configurazione API in API Gateway

Per creare l'API, esegui il deployment della relativa configurazione in API Gateway. Utilizza il comando gcloud per eseguire il deployment della configurazione API:

Utilizza gcloud per eseguire il deployment della specifica OpenAPI.

Una volta eseguito il deployment della configurazione dell'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 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 risolvere 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 accedere all'API. Attualmente, API Gateway supporta lo stesso meccanismo di autenticazione e la stessa sintassi utilizzati da Cloud Endpoints, tra cui l'utilizzo di:

Puoi anche utilizzare la console della piattaforma Google Cloud 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, l'API deve anche decidere cosa può fare l'utente autenticato con l'API. Per ulteriori informazioni, consulta la guida all'autenticazione Google Cloud.

Passaggi successivi