Architettura del gateway API

API Gateway è un sistema di gestione delle API che fornisce gestione, monitoraggio e autenticazione per le tue API. I componenti che costituiscono API Gateway includono:

  • API Gateway: per gestire tutti gli aspetti di un'API di cui è stato eseguito il deployment
  • Service Control: per l'applicazione delle regole di gestione delle API
  • Service Management: per la gestione delle configurazioni API
  • gcloud CLI: per il deployment e la gestione delle API
  • consoleGoogle Cloud : per logging, monitoraggio e condivisione

Architettura

Di seguito è riportato un diagramma generale dei principali componenti coinvolti in API Gateway:

I componenti principali di API Gateway.

In questo diagramma:

  • Il fornitore dell'API è responsabile della creazione e del deployment di un'API su API Gateway. Ogni API è definita da un file scritto come specifica OpenAPI 2.0.

    La specifica OpenAPI definisce l'URL pubblico dell'endpoint REST per l'API, il servizio di backend a cui accede l'API e qualsiasi altra caratteristica dell'API, come autenticazione, formato dei dati e opzioni di risposta.

  • Il client API effettua una richiesta REST a un'API ospitata su API Gateway per accedere ai servizi di backend. Un client API può essere qualsiasi app in grado di effettuare una chiamata REST, ad esempio un browser, un'app mobile o un'app web.

    Il client API deve conoscere solo l'URL dell'API, il verbo della richiesta (ad esempio GET, PUT, POST, DELETE), eventuali requisiti di autenticazione e il formato di tutti i dati inviati all'API o ricevuti da quest'ultima.

    Il client API non deve sapere nulla dell'implementazione del backend. Infatti, una singola API ospitata su API Gateway può essere configurata per accedere a backend diversi in base alle informazioni trasmesse nella richiesta.

Componenti di API Gateway

API Gateway

API Gateway fornisce una soluzione completamente gestita e con pagamento a consumo per l'hosting delle tue API. API Gateway fornisce un accesso sicuro ai tuoi servizi di backend tramite un'API REST ben definita e coerente in tutti i tuoi servizi, indipendentemente dall'implementazione del servizio.

API Gateway è integrato con Google Cloud in modo da poter utilizzare gli stessi strumenti di sviluppo, monitoraggio, logging e tracciamento che utilizzi con qualsiasi altro prodotto Google Cloud .

Se ti connetti a un servizio di backend ospitato al di fuori di Google Cloud, puoi comunque usufruire di tutti i servizi Google Cloud , inclusi i servizi di autenticazione e autorizzazione utilizzati per controllare l'accesso alle tue API.

API Service Control

L'API Service Control applica regole di gestione delle API in fase di runtime, come l'autenticazione con chiave API, il monitoraggio e la registrazione. Service Control fornisce i seguenti metodi:

  • Check: verifica l'autenticazione e le chiavi API e indica se una chiamata deve essere consentita
  • Report: invia una notifica ai sistemi di registrazione per il logging e il monitoraggio

API Service Management

Utilizzi la specifica OpenAPI per definire la tua API. Quindi, utilizzi gcloud CLI per caricare la specifica OpenAPI in Service Management, che crea la configurazione API. Qui vengono eseguite anche altre attività correlate alla configurazione, come la condivisione dell'API con altri sviluppatori, l'attivazione o la disattivazione dell'API in progetti diversi e la generazione di chiavi API.

Interfaccia a riga di comando gcloud

La CLI gcloud fornisce lo strumento a riga di comando gcloud che puoi utilizzare per effettuare chiamate a vari servizi. Google Cloud Utilizzi Google Cloud CLI per caricare la specifica OpenAPI, che crea la configurazione API, e poi per eseguire il deployment della configurazione API in API Gateway.

console Cloud

Google Cloud console è la Graphic User Interface per Google Cloud console. Utilizza la console Google Cloud per esporre i dati di monitoraggio e di logging registrati da Service Control, per configurare l'autenticazione e l'autorizzazione e per consentire agli sviluppatori di generare chiavi API per chiamare l'API.

Gestione di una richiesta API

In una configurazione API, esistono due tipi di endpoint:

  • Endpoint API: definisce l'endpoint disponibile pubblicamente che i client utilizzano per utilizzare le tue API.
  • Endpoint di backend: definisce l'endpoint utilizzato dall'API per connettersi al tuo servizio di backend. Le impostazioni di sicurezza, come l'accesso HTTP o HTTPS, sono definite dall'implementazione del servizio di backend.

Le richieste all'endpoint API vengono trasmesse all'endpoint di backend, inclusi i dati trasmessi come parte della richiesta. Le risposte del servizio di backend, inclusi i dati restituiti dal servizio, vengono restituite al client.

Routing delle richieste

Quando viene ricevuta una richiesta:

  1. API Gateway crea un token di traccia per Cloud Trace.

  2. API Gateway associa il percorso delle richieste in entrata all'API di destinazione. Dopo aver trovato una route corrispondente, API Gateway esegue i passaggi di autenticazione per l'API specificata.

  3. Se è necessaria la convalida JWT, API Gateway convalida l'autenticazione utilizzando la chiave pubblica appropriata per il firmatario e convalida il campo pubblico nel JWT. Se è necessaria una chiave API, API Gateway chiama l'API Service Control per convalidarla.

  4. Service Control cerca la chiave per convalidarla e verifica che il progetto associato alla chiave abbia abilitato l'API. Se la chiave non è valida o se il progetto non ha abilitato l'API, la chiamata viene rifiutata e registrata tramite l'API Service Control.

  5. Se Service Control convalida correttamente la chiave, la richiesta, insieme a tutte le intestazioni originali e a un'intestazione di convalida JWT, se appropriato, viene inoltrata al backend.

  6. Quando viene ricevuta una risposta dal backend, API Gateway la restituisce al chiamante e invia le informazioni di temporizzazione finali a Trace. I punti di chiamata vengono registrati dall'API Service Control, che scrive quindi le metriche e i log nelle destinazioni appropriate.

Passaggi successivi