Informazioni su API Gateway

Oggi i servizi basati sul web offrono una vasta gamma di funzionalità, ad esempio servizi di mappe, meteo e immagini, giochi, aste e molti altri tipi di servizi. I fornitori di servizi hanno molte opzioni a disposizione per implementare, eseguire il deployment e gestire i loro servizi. Ad esempio, un servizio potrebbe essere sviluppato in Java o .NET, mentre un altro potrebbe utilizzare Node.js.

Le implementazioni del backend possono variare anche per un singolo provider di servizi. Un fornitore di servizi potrebbe aver implementato servizi legacy utilizzando un'unica 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 all'app client dati in formato XML o JSON.

Informazioni sui servizi della piattaforma Google Cloud

Quando sviluppi i tuoi servizi sulla Google Cloud Platform, hai a disposizione molte opzioni per l'implementazione dei servizi, ad esempio Cloud Functions, Cloud Run e l'ambiente standard di App Engine. La flessibilità di Google Cloud significa scegliere l'architettura di backend corretta per le tue esigenze di 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 eseguite in un browser o qualsiasi altro tipo di app in grado di richiedere un servizio.

Esporre i servizi pubblicamente sul web può essere difficile. Per avere successo, un fornitore di servizi deve:

  • Autentica l'accesso al servizio
  • Trasporto sicuro dei dati tra i client e il servizio
  • Proteggi il servizio da attacchi dannosi
  • Scala il servizio con l'aumento o la diminuzione dell'utilizzo
  • Fornire al team delle operazioni di backend un modo per monitorare e tenere traccia dell'utilizzo dei servizi
  • Tieni traccia dell'utilizzo per fornire dati di fatturazione precisi

Inoltre, se i servizi utilizzano interfacce e protocolli diversi, l'accesso a questi servizi può essere difficile per gli sviluppatori di app. Gli sviluppatori non devono solo apprendere e comprendere ciascuna interfaccia di 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à.

Gateway API

API Gateway ti consente di fornire un accesso sicuro ai tuoi servizi attraverso un'API REST ben definita che sia coerente in tutti i tuoi servizi, indipendentemente dall'implementazione. 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 nella Google Cloud Platform

L'immagine seguente mostra gli sviluppatori di app che effettuano richieste ai servizi di backend tramite API Gateway:

Richieste di servizi web 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 tue API su API Gateway, puoi aggiornare il servizio di backend o persino spostarlo da un'architettura a un'altra, senza dover cambiare l'API. Finché l'API per il 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 backend.

API Gateway è un sistema di gestione delle API distribuito che offre 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 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 consumare funzionalità o dati di un'altra applicazione. Mediante la definizione di entry point stabili, semplici e ben documentati, le API consentono agli sviluppatori di accedere facilmente alla logica dell'applicazione creata da altri sviluppatori e riutilizzarla.

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 Restituisci 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 Effettua una richiesta GET all'API.
Parametro 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, potresti effettuare 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 dei dati e dei codici di risposta HTTP, lo sviluppatore dell'app non ha bisogno di sapere nulla sull'implementazione sottostante del servizio di backend.

Poiché le applicazioni che utilizzano le API sono sensibili ai cambiamenti, le API implicano anche un contratto tra provider e consumer delle API. Il contratto garantisce che nel tempo l'API cambierà in modo prevedibile. Ad esempio, l'API Book potrebbe essere aggiornata per aggiungere ulteriori parametri di ricerca, come title o author, oppure modificare il codice JSON della risposta per aggiungere ulteriori informazioni sul libro.

Definizione di un'API

Puoi definire 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 trasmessi in seguito a una richiesta all'API
  • Il formato dei dati restituiti dal servizio nella risposta dall'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 delle API in Google Cloud.

Deployment di una configurazione API su 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:

Usa gcloud per eseguire il deployment della specifica OpenAPI.

Una volta eseguito il deployment della configurazione API, i client possono effettuare chiamate REST all'API.

Gestione di un'API

Dopo 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 relative alla richiesta e alla risposta. API Gateway monitora anche latenza, traffico ed errori.

Nel corso del tempo, potresti voler aggiornare un'API di cui è stato eseguito il deployment per aggiungere nuove funzionalità, migliorare le prestazioni o risolvere i problemi dell'API. Per aggiornare un'API di cui è stato eseguito il deployment, è sufficiente aggiornare la specifica OpenAPI per la definizione dell'API, quindi caricare l'API ed eseguirne nuovamente il deployment.

Controllo dell'accesso alle 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 di Google Cloud Platform per condividere l'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, l'API deve anche decidere che cosa può fare l'utente autenticato con l'API. Per ulteriori informazioni, consulta la guida all'autenticazione Google Cloud.

Passaggi successivi