

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

# Tutorial: creazione di una REST API con un'integrazione non proxy HTTP
<a name="api-gateway-create-api-step-by-step"></a>

 In questo tutorial viene creata un'API da zero utilizzando la console Amazon API Gateway. Puoi pensare alla console come a uno studio di progettazione delle API e utilizzarla per analizzare le caratteristiche delle API, sperimentare i loro comportamenti, crearle e poi distribuirle per fasi. 

**Topics**
+ [Creazione di un'API con l'integrazione personalizzata HTTP](#api-gateway-create-resource-and-methods)
+ [(Facoltativo) Mappatura dei parametri di richiesta](#api-gateway-create-resources-and-methods-next-steps)

## Creazione di un'API con l'integrazione personalizzata HTTP
<a name="api-gateway-create-resource-and-methods"></a>

 Questa sezione illustra per fasi come creare le risorse, esporre i metodi su una risorsa, configurare un metodo per ottenere i comportamenti dell'API desiderati, testar e distribuire le API.

In questa fase si crea un'API vuota. Nelle seguenti fasi crei risorse e metodi per connettere l'API all'endpoint `http://petstore-demo-endpoint.execute-api.com/petstore/pets`, utilizzando un'integrazione HTTP non proxy. 

**Come creare un’API**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Se si utilizza API Gateway per la prima volta, verrà visualizzata una pagina che presenta le caratteristiche del servizio. In **API REST**, scegliere **Crea**. Quando appare il popup **Create Example API (Crea API di esempio)**, scegliere **OK**.

   Se non è la prima volta che si utilizza API Gateway, scegliere **Create API (Crea API)**. In **API REST**, scegliere **Crea**.

1.  Per **API name (Nome API)**, immettere **HTTPNonProxyAPI**.

1. (Facoltativo) In **Descrizione**, immetti una descrizione.

1. Lasciare l'opzione **Tipo di endpoint API** impostata su **Regionale**.

1. Per il tipo di **indirizzo IP**, selezionare. **IPv4**

1. Seleziona **Create API** (Crea API).

L'albero **Resources (Risorse)** mostra la risorsa root (`/`) senza metodi. In questo esercizio, creeremo l'API con l'integrazione personalizzata HTTP del PetStore sito Web (http://petstore-demo-endpoint.execute-api. com/petstore/pets.) A scopo illustrativo, creeremo una `/pets` risorsa come elemento secondario della radice e mostreremo un metodo GET su questa risorsa per consentire a un cliente di recuperare un elenco di articoli Pets disponibili dal sito Web. PetStore 

**Per creare una risorsa /pets**

1. Scegli **Crea risorsa**.

1. Mantieni l'opzione **Risorsa proxy** disattivata.

1. Mantieni **Percorso risorsa** impostato su `/`.

1. Per **Resource Name (Nome risorsa)** immetti **pets**.

1. Mantieni **CORS (Cross Origin Resource Sharing)** disattivato.

1. Scegli **Crea risorsa**.

In questa fase crei un metodo `GET` per la risorsa **/pets**. Il metodo `GET` è integrato con il sito Web `http://petstore-demo-endpoint.execute-api.com/petstore/pets`. Altre opzioni per il metodo API sono:
+ **POST**, usato principalmente per creare risorse figlio.
+ **PUT**, utilizzato principalmente per aggiornare risorse esistenti (e, sebbene non consigliato, può essere usato per creare risorse figlio).
+ **DELETE**, utilizzato per eliminare le risorse.
+ **PATCH**, utilizzato per aggiornare le risorse.
+ **HEAD**, utilizzato principalmente negli scenari di test. È lo stesso di GET ma non restituisce la rappresentazione della risorsa.
+ **OPTIONS**, che può essere utilizzato dagli intermediari per ricevere informazioni sulle opzioni di comunicazione disponibili per il servizio di destinazione.

 Per **HTTP method (Metodo HTTP)** della richiesta di integrazione, occorre selezionarne uno supportato dal back-end. Per `HTTP` o `Mock integration`, è opportuno che la richiesta di metodo e la richiesta di integrazione utilizzino lo stesso verbo HTTP. Per altri tipi di integrazione, la richiesta di metodo utilizzerà probabilmente un verbo HTTP diverso da quello della richiesta di integrazione. Ad esempio, per chiamare una funzione Lambda, la richiesta di integrazione deve utilizzare `POST` per invocare la funzione, mentre la richiesta di metodo potrebbe utilizzare qualsiasi verbo HTTP in base alla logica della funzione Lambda. 

**Per creare un metodo `GET` nella risorsa **/pets****

1. Seleziona la risorsa **/pets**.

1. Scegli **Crea metodo**.

1. Per **Tipo di metodo** seleziona **GET**.

1. Per **Tipo di integrazione** seleziona **Integrazione HTTP**.

1. Mantieni l'opzione **Integrazione proxy HTTP** disattivata.

1. Per **Metodo HTTP** seleziona **GET**.

1. Per **URL dell'endpoint** immetti **http://petstore-demo-endpoint.execute-api.com/petstore/pets**.

   Il PetStore sito Web consente di recuperare un elenco di `Pet` elementi in base al tipo di animale domestico, ad esempio «Cane» o «Gatto», in una determinata pagina.

1. Per **Gestione contenuti** seleziona **Transito**.

1. Scegli **Parametri della stringa di query URL**.

   Il PetStore sito Web utilizza `type` i parametri della stringa di `page` interrogazione per accettare un input. Aggiungi i parametri della stringa di query alla richiesta del metodo e mappali nei parametri della stringa di query corrispondenti della richiesta di integrazione. 

1. Per aggiungere i parametri della stringa di query, procedi come indicato di seguito:

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

   1. Per **Nome** immetti **type**.

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

   Ripeti le fasi precedenti per creare una stringa di query aggiuntiva denominata **page**.

1. Scegli **Crea metodo**.

Se invii una richiesta, ora il client può fornire un tipo di animale e un numero di pagina come parametri della stringa di query. Questi parametri di input devono essere mappati nei parametri della stringa di query dell'integrazione per inoltrare i valori di input al nostro PetStore sito Web nel backend.

**Per mappare i parametri di input alla richiesta di integrazione**

1. Nella scheda **Richiesta di integrazione** scegli **Modifica** in **Impostazioni della richiesta di integrazione**.

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

   1. Scegli **Aggiungi parametro della stringa di query**.

   1. In **Nome**, inserisci **type**.

   1. Per **Mappato da** immetti **method.request.querystring.type**.

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

   1. Scegli **Aggiungi parametro della stringa di query**.

   1. In **Nome**, inserisci **page**.

   1. Per **Mappato da** immetti **method.request.querystring.page**.

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

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

**Per testare l'API**

1. Seleziona la scheda **Test**. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.

1. In **Stringhe di query** immetti **type=Dog&page=2**.

1. Scegli **Test (Esegui test)**.

    Il risultato è simile al seguente:

      
![\[Risultato del metodo GET on Pets per la chiamata di test\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/api-gateway-create-api-step-by-step-test-invoke-get-on-pets-result-new-console.png)

    Ora che il test è andato a buon fine, puoi distribuire l'API per renderla pubblicamente disponibile. 

1. Seleziona **Deploy API (Distribuisci API)**.

1. In **Fase**, seleziona **Nuova fase**.

1. In **Stage name (Nome fase)** immettere **Prod**.

1. (Facoltativo) In **Descrizione**, immetti una descrizione.

1. Seleziona **Implementa**.

1.  (Facoltativo) In **Dettagli fase** puoi scegliere l'icona Copia per copiare l'URL di richiamata dell'API in **Richiama URL**. È possibile usare questo valore con strumenti come [Postman](https://www.postman.com) e [cURL](https://curl.se/) per testare l'API.

 Se utilizzi un SDK per creare un client, puoi chiamare i metodi esposti dall'SDK per firmare la richiesta. Per maggiori dettagli sull'implementazione, consulta il kit [SDK AWS](https://aws.amazon.com/developer/tools/) scelto. 

**Nota**  
 Se apporti modifiche alla tua API, devi ridistribuirla per fare in modo che le caratteristiche nuove o aggiornate siano disponibili prima di chiamare di nuovo l'URL di richiesta. 

## (Facoltativo) Mappatura dei parametri di richiesta
<a name="api-gateway-create-resources-and-methods-next-steps"></a>

### Mappatura di parametri di richieste per un'API di API Gateway
<a name="getting-started-mappings"></a>

 Questo tutorial illustra come creare il parametro di percorso `{petId}` nella richiesta del metodo dell'API in modo da specificare un ID elemento, mapparlo al parametro di percorso `{id}` nell'URL della richiesta di integrazione e inviare la richiesta all'endpoint HTTP.

**Nota**  
 Se immetti una lettera maiuscola o minuscola errata, ad esempio una lettera minuscola anziché maiuscola, verranno restituiti errori più avanti nella procedura dettagliata. 

#### Fase 1: Creazione delle risorse
<a name="getting-started-mappings-add-resources"></a>

In questa fase crei una risorsa con un parametro di percorso \$1petId\$1.

**Per creare la risorsa \$1petId\$1**

1. Seleziona la risorsa **/pets**, quindi scegli **Crea risorsa**.

1. Mantieni l'opzione **Risorsa proxy** disattivata.

1. Per **Percorso risorsa** seleziona **/pets**.

1. Per **Resource Name (Nome risorsa)** immetti **\$1petId\$1**.

    Utilizza le parentesi graffe (`{ }`) per racchiudere `petId`, in modo da visualizzare **/pets/\$1petId\$1**.

1. Mantieni **CORS (Cross Origin Resource Sharing)** disattivato.

1. Scegli **Crea risorsa**.

#### Fase 2: Creazione e test dei metodi
<a name="getting-started-mappings-set-methods"></a>

 In questa fase crei un metodo `GET` con un parametro di percorso `{petId}`. 

**Per configurare il metodo GET**

1. Seleziona la risorsa **/\$1petId\$1**, quindi scegli **Crea metodo**.

1. Per **Tipo di metodo** seleziona **GET**.

1. Per **Tipo di integrazione** seleziona **Integrazione HTTP**.

1. Mantieni l'opzione **Integrazione proxy HTTP** disattivata.

1. Per **Metodo HTTP** seleziona **GET**.

1. Per **URL dell'endpoint** immetti **http://petstore-demo-endpoint.execute-api.com/petstore/pets/\$1id\$1**.

1. Per **Gestione contenuti** seleziona **Transito**.

1. Mantieni attivata l'opzione **Timeout predefinito**. 

1. Scegli **Crea metodo**.

A questo punto mappare il parametro di percorso `{petId}` appena creato al parametro di percorso `{id}` nell'URL dell'endpoint HTTP della richiesta di integrazione. L'URL dell'endpoint HTTP è **http://petstore-demo-endpoint.execute-api.com/petstore/pets/\$1id\$1**.

**Per mappare il parametro di percorso `{petId}`**

1. Nella scheda **Richiesta di integrazione** scegli **Modifica** in **Impostazioni della richiesta di integrazione**.

1. Scegli **Parametri di percorso URL**.

1.  Gateway API crea un parametro di percorso per la richiesta di integrazione denominato **petId** che tuttavia non è valido per l'URL dell'endpoint HTTP impostato come integrazione backend. L'endpoint HTTP utilizza `{id}` come parametro di percorso. Per **Nome**, elimina **petId** e inserisci **id**.

   In questo modo, verrà mappato il parametro di percorso `petId` della richiesta del metodo al parametro di percorso `id` della richiesta di integrazione.

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

Quindi testa il metodo.

**Test del metodo **

1. Seleziona la scheda **Test**. Potrebbe essere necessario scegliere il pulsante freccia destra per visualizzare la scheda.

1. In **Percorso** immetti **4** per **petId**.

1. Scegli **Test (Esegui test)**.

   Se il test ha esito positivo, in **Corpo della risposta** viene visualizzato quanto segue:

   ```
   {
     "id": 4,
     "type": "bird",
     "price": 999.99
   }
   ```

#### Fase 3: Distribuzione dell'API
<a name="getting-started-mappings-deploy"></a>

In questa fase, viene distribuita l'API per poter iniziare a richiamarla esternamente alla console API Gateway.

**Per distribuire l'API**

1. Seleziona **Deploy API (Distribuisci API)**.

1. Per **Fase** seleziona **Produzione**.

1. (Facoltativo) In **Descrizione**, immetti una descrizione.

1. Selezionare **Deploy (Distribuisci)**.

#### Fase 4: Test dell'API
<a name="getting-started-mappings-test"></a>

In questa fase verrà chiusa la console API Gateway e utilizzata l'API per accedere all'endpoint HTTP.

1. Nel pannello di navigazione principale scegli **Fase**.

1. In **Dettagli fase**, scegli l'icona Copia per copiare l'URL di richiamo dell'API.

   Dovrebbe essere simile a quanto segue:

   ```
   https://my-api-id.execute-api.region-id.amazonaws.com/prod
   ```

1. Inserisci questo URL nella casella dell'indirizzo di una nuova scheda del browser e aggiungi `/pets/4` all'URL prima di inviare la richiesta.

1. Il browser restituirà quanto segue:

   ```
   {
     "id": 4,
     "type": "bird",
     "price": 999.99
   }
   ```

#### Fasi successive
<a name="api-gateway-create-resources-and-methods-next-steps"></a>

Puoi personalizzare ulteriormente la tua API attivando la convalida delle richieste, trasformando i dati o creando risposte del gateway personalizzate. 

Per scoprire altri modi per personalizzare l'API, consulta i seguenti tutorial:
+ Per ulteriori informazioni sulla convalida della richiesta, consulta [Configurazione della convalida di base delle richieste in API Gateway](api-gateway-request-validation-set-up.md).
+ Per informazioni su come trasformare i payload di richiesta e risposta, consulta [Tutorial: modifica la richiesta e la risposta di integrazione per le integrazioni ai servizi AWS](set-up-data-transformations-in-api-gateway.md).
+ Per informazioni su come creare risposte del gateway personalizzate, consulta [Impostare una risposta del gateway per un'API REST utilizzando la console API Gateway](set-up-gateway-response-using-the-console.md).