API calcolatore semplice in API Gateway - Amazon API Gateway

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à.

API calcolatore semplice in API Gateway

L'API calcolatore semplice espone tre metodi (GET, POST, GET) per richiamare la Funzione Lambda del calcolatore semplice. Di seguito è illustrata una rappresentazione grafica di quest'API:

API calcolatore semplice per l'SDK generato

Questi tre metodi mostrano modi diversi per fornire l'input per la funzione Lambda di back-end per eseguire la stessa operazione:

  • Il metodo GET /?a=...&b=...&op=... usa i parametri di query per specificare l'input.

  • Il metodo POST / usa un payload JSON {"a":"Number", "b":"Number", "op":"string"} per specificare l'input.

  • Il metodo GET /{a}/{b}/{op} usa i parametri di percorso per specificare l'input.

Se non è definito, API Gateway genera il nome del metodo SDK corrispondente combinando le parti relative al metodo HTTP e al percorso. La parte del percorso root (/) è detta Api Root. Ad esempio, il nome del metodo SDK Java predefinito per il metodo API GET /?a=...&b=...&op=... è getABOp, il nome del metodo SDK predefinito per POST / è postApiRoot e il nome del metodo SDK predefinito per GET /{a}/{b}/{op} è getABOp. La convenzione può essere personalizzata per i singoli SDK. Consulta la documentazione dell'origine dell'SDK generato per informazioni sui nomi di metodi SDK specifici.

È possibile e consigliabile sostituire i nomi dei metodi SDK predefiniti specificando la proprietà operationName in ogni metodo API. Questa operazione viene eseguita durante la creazione del metodo API o l'aggiornamento del metodo API con l'API REST di API Gateway. Nella definizione Swagger dell'API è possibile impostare operationId per ottenere lo stesso risultato.

Prima di illustrare come invocare questi metodi usando un SDK generato da API Gateway per questa API, esaminiamo brevemente come eseguire la configurazione. Per istruzioni dettagliate, consulta Sviluppa REST APIs in API Gateway. Se non hai mai usato API Gateway, consulta prima Scegli un tutorial di integrazione AWS Lambda.

Creazione di modelli per l'input e l'output

Per specificare un input fortemente tipizzato nell'SDK, creiamo un modello Input per l'API. Per descrivere il tipo di dati del corpo della risposta, creiamo un modello Output e un modello Result.

Per creare i modelli per l'input, l'output e il risultato
  1. Nel riquadro di navigazione principale seleziona Modelli.

  2. Scegli Crea modello.

  3. Per Nome, immetti input.

  4. Per Tipo di contenuto inserisci application/json.

    Se non viene trovato alcun tipo di contenuto corrispondente, la convalida della richiesta non viene eseguita. Per utilizzare lo stesso modello indipendentemente dal tipo di contenuti, inserisci $default.

  5. Per Schema modello immetti il seguente modello:

    { "$schema" : "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "a":{"type":"number"}, "b":{"type":"number"}, "op":{"type":"string"} }, "title":"Input" }
  6. Scegli Crea modello.

  7. Ripeti le seguenti fasi per creare un modello Output e un modello Result.

    Per il modello Output immetti in Schema modello quanto segue:

    { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "c": {"type":"number"} }, "title": "Output" }

    Per il modello Result immetti in Schema modello quanto segue. Sostituisci l'ID API abc123 con il tuo ID API.

    { "$schema": "http://json-schema.org/draft-04/schema#", "type":"object", "properties":{ "input":{ "$ref":"https://apigateway.amazonaws.com/restapis/abc123/models/Input" }, "output":{ "$ref":"https://apigateway.amazonaws.com/restapis/abc123/models/Output" } }, "title":"Result" }

Configurazione dei parametri di query del metodo GET /

Per il metodo GET /?a=..&b=..&op=.., i parametri di query sono dichiarati in Method Request (Richiesta metodo):

Per configurare i parametri della stringa di query GET/URL
  1. Nella sezione Richiesta metodo scegli Modifica per il metodo GET sulla risorsa root (/).

  2. Scegli Parametri della stringa di query URL ed effettua le seguenti operazioni:

    1. Scegliere Add query string (Aggiungi stringa di query).

    2. Per Nome, immetti a.

    3. Mantieni Obbligatorio e Caching disattivati.

    4. Mantieni disattivata l'opzione Caching.

    Ripeti le stesse fasi e crea una stringa di query denominata b e una stringa di query denominata op.

  3. Selezionare Salva.

Configurazione del modello di dati per il payload come input nel back-end

Per il metodo POST /, creiamo il modello Input e lo aggiungiamo alla richiesta del metodo per definire la forma dei dati di input.

Per configurare il modello di dati per il payload come input nel back-end
  1. Nella sezione Richiesta metodo scegli Modifica per il metodo POST sulla risorsa root (/).

  2. Scegli Corpo della richiesta.

  3. Scegliere Add model (Aggiungi modello).

  4. Per Tipo di contenuto inserisci application/json.

  5. Per Modello seleziona Input.

  6. Selezionare Salva.

Con questo modello, i clienti dell'API possono chiamare l'SDK per specificare l'input creando un'istanza di un oggetto Input. Senza questo modello, i clienti dovrebbero creare un oggetto dizionario per rappresentare l'input JSON per la funzione Lambda.

Configurazione del modello di dati per l'output del risultato dal back-end

Per tutti e tre i metodi, creiamo il modello Result e lo aggiungiamo in Method Response per il metodo per definire la forma dell'output restituito dalla funzione Lambda.

Per configurare il modello di dati per l'output del risultato dal back-end
  1. Seleziona la risorsa /{a}/{b}/{op}, quindi scegli il metodo GET.

  2. Nella scheda Risposta metodo scegli Modifica in Risposta 200.

  3. In Corpo della risposta scegli Aggiungi modello.

  4. Per Tipo di contenuto inserisci application/json.

  5. Per Modello seleziona Risultato.

  6. Selezionare Salva.

Con questo modello, i clienti dell'API possono analizzare un output con esito positivo leggendo le proprietà di un oggetto Result. Senza questo modello, i clienti dovrebbero creare un oggetto dizionario per rappresentare l'output JSON.