Regole di routing per connettere le fasi dell'API a un nome di dominio personalizzato per REST APIs - Gateway Amazon API

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Regole di routing per connettere le fasi dell'API a un nome di dominio personalizzato per REST APIs

Una regola di routing è un insieme di condizioni che, se soddisfatte, invocano un’azione. Ad esempio, una regola può instradare qualsiasi richiesta in entrata per un nome di dominio personalizzato che contiene l’intestazione Hello:World e il percorso di base users alla fase production di una REST API.

Le regole vengono valutate in ordine di priorità; impostando la modalità di routing su ROUTING_RULE_THEN_API_MAPPING, Gateway API valuta sempre tutte le regole di routing prima di valutare qualsiasi mappatura API. Di seguito viene illustrato come una regola di routing utilizza condizioni, azioni e priorità.

Condizioni

Quando le condizioni di una regola vengono soddisfatte, l'operazione viene eseguita. Gateway API supporta fino a due condizioni di intestazione e una condizione di percorso. Gateway API valuta insieme le condizioni di intestazione e le condizioni di percorso di base.

È possibile creare una regola senza condizioni. Quando Gateway API valuta questa regola, l’azione viene sempre eseguita. È possibile creare una regola senza condizioni come regola catch-all.

Per ulteriori informazioni sulle condizioni di intestazione, consultare Corrispondenza delle condizioni di intestazione. Per ulteriori informazioni sulle condizioni di percorso, consultare Corrispondenza delle condizioni di percorso di base.

Azioni

Le azioni sono il risultato della corrispondenza delle condizioni a una regola di routing. Attualmente, l’unica azione supportata consiste nell’invocare una fase di una REST API.

Ogni regola può avere una sola azione.

Priorità

La priorità determina l’ordine in cui vengono valutate le regole, dal valore più basso a quello più alto. Le regole non possono avere la stessa priorità.

È possibile impostare la priorità su un valore compreso tra 1 e 1.000.000. Se una regola ha la priorità pari a uno, Gateway API la valuta per prima. Quando si crea una regola, è consigliabile aggiungere degli spazi vuoti nelle priorità. Questo approccio consente di cambiare la priorità delle regole e aggiungere nuove regole. Per ulteriori informazioni, consulta Modifica della priorità di una regola di routing.

Per esempi di come Gateway API valuta le regole di routing, consulta Esempi di come Gateway API valuta le regole di routing.

Tipi di condizione delle regole di routing di Gateway API

La sezione seguente illustra i tipi di condizione delle regole di routing. Gateway API soddisfa una regola solo se tutte le condizioni sono vere.

Corrispondenza delle condizioni di intestazione

Quando si crea una condizione di intestazione, è possibile eseguire la corrispondenza al nome dell’intestazione e al valore glob dell’intestazione, ad esempio Hello:World. Gateway API utilizza una corrispondenza letterale per convalidare la corrispondenza delle condizioni di intestazione. La condizione può utilizzare fino a due intestazioni specificando AND tra loro. Ad esempio, la condizione può essere soddisfatta se una richiesta in entrata contiene Hello:World e x-version:beta.

La corrispondenza del nome dell’intestazione non fa distinzione tra maiuscole e minuscole, ma il valore glob dell’intestazione rispetta la distinzione tra maiuscole e minuscole. Hello:World corrisponde a hello:World, ma non a Hello:world.

Per l’elenco dei valori di intestazione con limitazioni, consultare Restrizioni.

Utilizzo di caratteri jolly con le condizioni di intestazione

È possibile utilizzare i caratteri jolly solo nel valore glob dell’intestazione e il carattere jolly deve essere *prefix-match, suffix-match* o *contains*. La tabella seguente mostra degli esempi su come utilizzare i caratteri jolly per la corrispondenza delle condizioni di intestazione.

Condizioni di intestazione Richieste che soddisfano la regola di routing Richieste che non soddisfano la regola di routing

x-version: a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a

  • x-version: alpha

  • x-version: beta

  • x-version: account

  • x-version: backup

  • x-version: users

x-version: *a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a* e x-version: *b*

  • x-version: backup

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: users

x-version: b* e x-version: *a

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: users

x-version: *

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

Nessuno

Se si creano condizioni per più valori di intestazione, ad esempio Accept:application/json,text/xml, è consigliabile utilizzare *contains* per le condizioni di intestazione ed evitare di creare condizioni usando la virgola (,).

Poiché Gateway API utilizza una corrispondenza letterale per le condizioni di intestazione, le corrispondenze semantiche potrebbero essere instradate in modo diverso. La tabella riportata di seguito mostra la differenza dei risultati delle regole di routing.

Condizioni di intestazione Richieste che soddisfano la regola di routing Richieste che non soddisfano la regola di routing

Accept: *json

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Accept: *json*

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Nessuno

Corrispondenza delle condizioni di percorso di base

Quando si crea una condizione di percorso di base, se la richiesta in entrata contiene il percorso specificato, la regola viene soddisfatta. La corrispondenza rispetta la distinzione tra maiuscole e minuscole, quindi il percorso New/Users non corrisponde a new/users.

È possibile creare una condizione di percorso di base per un solo percorso di base.

Per l’elenco delle condizioni di percorso di base con limitazioni, consultare Restrizioni.

Eliminazione del percorso di base con le condizioni di percorso base

Quando si crea una condizione del percorso base, è possibile scegliere di rimuovere il percorso base. Quando si elimina il percorso di base, Gateway API rimuove il percorso di base corrispondente in entrata quando invoca l’API di destinazione. Questo è lo stesso comportamento di quando si utilizza una mappatura API. Se non si elimina il percorso di base, Gateway API inoltra l’intero percorso di base all’API di destinazione. È consigliabile eliminare il percorso di base solo quando si crea nuovamente una mappatura API.

La tabella seguente mostra esempi di come Gateway API valuta la condizione di eliminazione del percorso di base.

Condizione Eliminazione del percorso di base Richiesta in entrata Risultato

Se il percorso di base contiene PetStoreShopper/dogs

True

GET https://example.com/PetStoreShopper/dogs

Gateway API chiama il metodo GET della risorsa /.

Se il percorso di base contiene PetStoreShopper/dogs.

False

GET https://example.com/PetStoreShopper/dogs

Gateway API chiama il metodo GET della risorsa PetStoreShopper/dogs.

Se il percorso di base contiene PetStoreShopper

True

GET https://example.com/PetStoreShopper/dogs

Gateway API chiama il metodo GET della risorsa dogs.

Se il percorso di base contiene PetStoreShopper

False

GET https://example.com/PetStoreShopper/dogs

Gateway API chiama il metodo GET della risorsa PetStoreShopper/dogs.

Se il percorso di base contiene PetStoreShopper

True

GET https://example.com/PetStoreShopper?birds=available

Gateway API chiama il metodo GET della risorsa / con il parametro della stringa di query birds=available.

Se il percorso di base contiene PetStoreShopper

False

GET https://example.com/PetStoreShopper?birds=available

Gateway API chiama il metodo GET della risorsa /PetStoreShopper con il parametro della stringa di query birds=available.

Restrizioni

  • L'API di destinazione e il nome di dominio personalizzato devono trovarsi nello stesso AWS account.

  • Ogni regola può avere una sola API di destinazione.

  • È possibile creare una regola di routing di un nome di dominio personalizzato privato per un’API privata e di un nome di dominio personalizzato pubblico per un’API pubblica. Non è possibile combinare insieme risorse pubbliche e private.

  • Se il nome di dominio personalizzato presenta mappature API sia su REST che su HTTP APIs, le regole di routing non sono supportate.

  • Il numero massimo per la priorità è 1.000.000.

  • Limitazioni di intestazione:

    • Ogni condizione anyOf può contenere un solo valore di intestazione.

    • Gli unici caratteri consentiti per i nomi delle intestazioni e i valori globali delle intestazioni sono specificati da RFC 7230, ossia a-z, A-Z, 0-9 e i seguenti caratteri speciali: *?-!#$%&'.^_`|~.

    • È possibile utilizzare un carattere jolly nel valore glob dell’intestazione, ma deve essere *prefix-match, suffix-match* o *contains*. Non è possibile utilizzare * all’interno di un valore glob dell’intestazione.

    • I nomi delle intestazioni con caratteri jolly non sono supportati.

    • Il nome dell’intestazione non può contenere più di 40 caratteri.

    • Il valore glob dell’intestazione non può contenere più di 128 caratteri.

    • Il valore glob dell’intestazione per una corrispondenza infissa non può contenere più di 40 caratteri.

    • Le seguenti intestazioni non sono supportate come condizioni:

      • access-control-*

      • apigw-*

      • Authorization

      • Connection

      • Content-Encoding

      • Content-Length

      • Content-Location

      • Forwarded

      • Keep-Alive

      • Origin

      • Proxy-Authenticate

      • Proxy-Authorization

      • TE

      • Trailers

      • Transfer-Encoding

      • Upgrade

      • x-amz-*

      • x-amzn-*

      • x-apigw-api-id

      • X-Forwarded-For

      • X-Forwarded-Host

      • X-Forwarded-Proto

      • x-restAPI

      • Via

  • Limitazioni di percorso di base:

    • Il percorso di base non può contenere più di 128 caratteri.

    • Il percorso di base deve contenere solo lettere, numeri e i seguenti caratteri: $-_.+!*'()/.

      Questi caratteri non sono supportati per le espressioni regolari (regex).

    • Il percorso di base non può iniziare né terminare con una barra rovesciata (\).