Creazione di instradamenti per API HTTP in Gateway API - Amazon API Gateway

Creazione di instradamenti per API HTTP in Gateway API

Esegui il routing delle richieste API in entrata dirette alle risorse di back-end. Le route sono costituite da due parti: un metodo HTTP e un percorso delle risorse, ad esempi, GET /pets. È possibile definire metodi HTTP specifici per il percorso. In alternativa, è possibile utilizzare il metodo ANY per abbinare tutti i metodi non definiti per una risorsa. È possibile creare una route $default che funga da catch-all per le richieste che non corrispondono ad altre route.

Nota

Gateway Amazon API decodifica i parametri di richiesta con codifica URL prima di passarli all'integrazione back-end.

Lavorare con le variabili di percorso

Nelle route delle API HTTP è possibile utilizzare delle variabili di percorso.

Ad esempio, il percorso GET /pets/{petID} cattura una richiesta GET inviata da un client https://api-id.execute-api.us-east-2.amazonaws.com/pets/6.

Una variabile di percorso greedy cattura tutte le risorse figlio di un percorso. Per creare una variabile di percorso greedy, aggiungere + al nome della variale, ad esempio {proxy+}. La variabile di percorso greedy deve trovarsi alla fine del percorso della risorsa.

Utilizzo dei parametri della stringa di query

Per impostazione predefinita, API Gateway invia i parametri della stringa di query all'integrazione back-end se sono inclusi in una richiesta a un oggetto API HTTP.

Ad esempio, quando un client invia una richiesta a https://api-id.execute-api.us-east-2.amazonaws.com/pets?id=4&type=dog, i parametri della stringa di query ?id=4&type=dog vengono inviati all'integrazione.

Lavorare con il percorso $default

Il percorso $default cattura le richieste che non corrispondono esplicitamente ad altri percorsi nell'API.

Quando la route $default riceve una richiesta, API Gateway invia il percorso completo della richiesta all'integrazione. Ad esempio, è possibile creare un'API con solo un percorso $default e integrarlo nel metodo ANY con l'endpoint https://petstore-demo-endpoint.execute-api.com HTTP. Quando si invia una richiesta a https://api-id.execute-api.us-east-2.amazonaws.com/store/checkout, API Gateway invia una richiesta a https://petstore-demo-endpoint.execute-api.com/store/checkout.

Per ulteriori informazioni sulle integrazioni HTTP, consultare Creazione delle integrazioni proxy HTTP per API HTTP.

Routing delle richieste API

Quando un client invia una richiesta API, API Gateway stabilisce innanzitutto a quale fase instradare la richiesta. Se la richiesta corrisponde esplicitamente a una fase, API Gateway invia la richiesta a tale fase. Se nessuna fase corrisponde completamente alla richiesta, API Gateway invia la richiesta alla fase $default. Se non c'è una fase $default, l'API restituisce {"message":"Not Found"} e non genera file di log di CloudWatch.

Dopo aver selezionato una fase, API Gateway seleziona una route. API Gateway seleziona la route con la corrispondenza più specifica, utilizzando le seguenti priorità:

  1. Corrispondenza completa per un percorso e un metodo.

  2. Corrispondenza per un percorso e un metodo con una variabile di percorso greedy ({proxy+}).

  3. Instradamento $default.

Se nessuna route corrisponde a una richiesta, API Gateway restituisce al client il valore {"message":"Not Found"}.

Ad esempio, si consideri un'API con una fase $default e le seguenti route di esempio:

  1. GET /pets/dog/1

  2. GET /pets/dog/{id}

  3. GET /pets/{proxy+}

  4. ANY /{proxy+}

  5. $default

    Nella tabella seguente viene riepilogato il modo in cui API Gateway instrada le richieste alle route di esempio.

Richiesta Percorso selezionato Spiegazione

GET https://api-id.execute-api.region.amazonaws.com/pets/dog/1

GET /pets/dog/1

La richiesta corrisponde completamente a questo instradamento statico.

GET https://api-id.execute-api.region.amazonaws.com/pets/dog/2

GET /pets/dog/{id}

La richiesta corrisponde completamente a questo percorso.

GET https://api-id.execute-api.region.amazonaws.com/pets/cat/1

GET /pets/{proxy+}

La richiesta non corrisponde completamente a un percorso. Il percorso con un metodo GET e una variabile di percorso greedy cattura questa richiesta.

POST https://api-id.execute-api.region.amazonaws.com/test/5

ANY /{proxy+}

Il metodo ANY corrisponde a tutti i metodi che non sono stati definiti per un percorso. I percorsi con variabili di percorso greedy hanno priorità più alta rispetto al percorso $default.