

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
<a name="simple-calc-lambda-api"></a>

L'API calcolatore semplice espone tre metodi (GET, POST, GET) per richiamare la [Funzione Lambda del calcolatore semplice](simple-calc-nodejs-lambda-function.md). Di seguito è illustrata una rappresentazione grafica di quest'API:

![\[API calcolatore semplice per l'SDK generato\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/simple-calc-api-console-hierarchy-new-console.png)


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`. L'individuo SDKs può personalizzare la convenzione. 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](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html#operationName) in ogni metodo API. Questa operazione viene eseguita durante la [creazione del metodo API](https://docs.aws.amazon.com/apigateway/latest/api/API_PutMethod.html) o l'[aggiornamento del metodo API](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateMethod.html) 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](rest-api-develop.md). Se non hai mai usato API Gateway, consulta prima [Scegli un tutorial di integrazione AWS Lambda](getting-started-with-lambda-integration.md).

## Creazione di modelli per l'input e l'output
<a name="simple-calc-lambda-api-create-models-for-input-and-output"></a>

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

1. Scegli **Crea modello**.

1. In **Nome**, inserisci **input**.

1. 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 **\$1default**.

1. 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"
   }
   ```

1. Scegli **Crea modello**.

1. 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 /
<a name="simple-calc-lambda-api-set-up-get-method-query-parameters"></a>

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 (`/`).

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

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

   1. In **Nome**, inserisci **a**.

   1. Mantieni **Obbligatorio** e **Caching** disattivati. 

   1. Mantieni disattivata l'opzione **Caching**.

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

1. Scegli **Save** (Salva).

## Configurazione del modello di dati per il payload come input nel back-end
<a name="simple-calc-lambda-api-set-up-post-method-body-data-type"></a>

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 (`/`).

1. Scegli **Corpo della richiesta**.

1. Scegliere **Add model (Aggiungi modello)**.

1. Per **Tipo di contenuto** inserisci **application/json**.

1. Per **Modello** seleziona **Input**.

1. Scegli **Save** (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
<a name="simple-calc-lambda-api-set-up-all-methods-result-data-type"></a>

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 **/\$1a\$1/\$1b\$1/\$1op\$1**, quindi scegli il metodo **GET**.

1. Nella scheda **Risposta metodo** scegli **Modifica** in **Risposta 200**.

1. In **Corpo della risposta** scegli **Aggiungi modello**.

1. Per **Tipo di contenuto** inserisci **application/json**.

1. Per **Modello** seleziona **Risultato**.

1. Scegli **Save** (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. 