

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

# Sistema di tipi (mappatura delle richieste)
<a name="js-aws-appsync-resolver-reference-dynamodb-typed-values-request"></a>

Quando si utilizza la funzione AWS AppSync DynamoDB per chiamare le tabelle DynamoDB AWS AppSync , è necessario conoscere il tipo di ogni valore da utilizzare in quella chiamata. Questo perché DynamoDB supporta più primitive di tipo rispetto a GraphQL o JSON (come set e dati binari). AWS AppSync necessita di alcuni suggerimenti per la traduzione tra GraphQL e DynamoDB, altrimenti dovrebbe formulare alcune ipotesi su come i dati sono strutturati nella tabella.

[Per ulteriori informazioni sui tipi di dati DynamoDB, consulta i descrittori dei tipi di dati e la documentazione sui tipi di dati di [DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.LowLevelAPI.html#Programming.LowLevelAPI.DataTypeDescriptors).](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)

Un valore DynamoDB è rappresentato da un oggetto JSON contenente una singola coppia chiave-valore. La chiave specifica il tipo DynamoDB e il valore specifica il valore stesso. In questo esempio, la chiave `S` indica che il valore è una stringa e il valore `identifier` è il valore della stringa stessa.

```
{ "S" : "identifier" }
```

L'oggetto JSON non può contenere più di una coppia chiave-valore. Se viene specificata più di una coppia chiave-valore, l'oggetto della richiesta non viene analizzato.

Un valore DynamoDB viene utilizzato ovunque in un oggetto di richiesta in cui è necessario specificare un valore. ad esempio nelle sezioni `key` e `attributeValue`, nonché nella sezione `expressionValues` delle sezioni delle espressioni. Nell'esempio seguente, il `identifier` valore DynamoDB String viene assegnato al `id` campo in `key` una sezione (magari in `GetItem` un oggetto di richiesta).

```
"key" : {
   "id" : { "S" : "identifier" }
}
```

 **Tipi supportati** 

AWS AppSync supporta i seguenti tipi di scalari, documenti e set di DynamoDB:

**`S` (tipo String) **  
Un singolo valore di stringa. Un valore di stringa DynamoDB è indicato da:  

```
{ "S" : "some string" }
```
Un esempio di utilizzo è:  

```
"key" : {
   "id" : { "S" : "some string" }
}
```

**`SS` (tipo String set) **  
Un set di valori di stringa. Un valore DynamoDB String Set è indicato da:  

```
{ "SS" : [ "first value", "second value", ... ] }
```
Un esempio di utilizzo è:  

```
"attributeValues" : {
   "phoneNumbers" : { "SS" : [ "+1 555 123 4567", "+1 555 234 5678" ] }
}
```

**`N` (tipo Number) **  
Un singolo valore numerico. Un valore numerico di DynamoDB è indicato da:  

```
{ "N" : 1234 }
```
Un esempio di utilizzo è:  

```
"expressionValues" : {
   ":expectedVersion" : { "N" : 1 }
}
```

**`NS` (tipo Number set) **  
Un set di valori numerici. Un valore del DynamoDB Number Set è indicato da:  

```
{ "NS" : [ 1, 2.3, 4 ... ] }
```
Un esempio di utilizzo è:  

```
"attributeValues" : {
   "sensorReadings" : { "NS" : [ 67.8, 12.2, 70 ] }
}
```

**`B` (tipo Binary) **  
Un valore binario. Un valore binario di DynamoDB è indicato da:  

```
{ "B" : "SGVsbG8sIFdvcmxkIQo=" }
```
Nota che il valore è in realtà una stringa, dove la stringa è la rappresentazione codificata in base64 dei dati binari. AWS AppSync decodifica nuovamente questa stringa nel suo valore binario prima di inviarla a DynamoDB. AWS AppSync utilizza lo schema di decodifica base64 come definito da RFC 2045: qualsiasi carattere che non sia nell'alfabeto base64 viene ignorato.  
Un esempio di utilizzo è:  

```
"attributeValues" : {
   "binaryMessage" : { "B" : "SGVsbG8sIFdvcmxkIQo=" }
}
```

**`BS` (tipo Binary set) **  
Un set di valori binari. Un valore del set binario di DynamoDB è indicato da:  

```
{ "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ] }
```
Nota che il valore è in realtà una stringa, dove la stringa è la rappresentazione codificata in base64 dei dati binari. AWS AppSync decodifica nuovamente questa stringa nel suo valore binario prima di inviarla a DynamoDB. AWS AppSync utilizza lo schema di decodifica base64 come definito da RFC 2045: qualsiasi carattere che non sia nell'alfabeto base64 viene ignorato.  
Un esempio di utilizzo è:  

```
"attributeValues" : {
   "binaryMessages" : { "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ] }
}
```

**`BOOL` (tipo Boolean) **  
Un valore booleano. Un valore booleano di DynamoDB è indicato da:  

```
{ "BOOL" : true }
```
Solo i valori `true` e `false` sono validi.  
Un esempio di utilizzo è:  

```
"attributeValues" : {
   "orderComplete" : { "BOOL" : false }
}
```

**`L` (tipo List) **  
Un elenco di qualsiasi altro valore DynamoDB supportato. Un valore di DynamoDB List è indicato da:  

```
{ "L" : [ ... ] }
```
Nota che il valore è un valore composto, in cui l'elenco può contenere zero o più di qualsiasi valore DynamoDB supportato (inclusi altri elenchi). L'elenco può anche contenere una combinazione di diversi tipi.  
Un esempio di utilizzo è:  

```
{ "L" : [
      { "S"  : "A string value" },
      { "N"  : 1 },
      { "SS" : [ "Another string value", "Even more string values!" ] }
   ]
}
```

**`M` (tipo Map) **  
Rappresenta una raccolta non ordinata di coppie chiave-valore di altri valori DynamoDB supportati. Un valore di DynamoDB Map è indicato da:  

```
{ "M" : { ... } }
```
Una mappa può contenere zero o più coppie chiave-valore. La chiave deve essere una stringa e il valore può essere qualsiasi valore DynamoDB supportato (incluse altre mappe). La mappa può anche contenere una combinazione di diversi tipi.  
Un esempio di utilizzo è:  

```
{ "M" : {
      "someString" : { "S"  : "A string value" },
      "someNumber" : { "N"  : 1 },
      "stringSet"  : { "SS" : [ "Another string value", "Even more string values!" ] }
   }
}
```

**`NULL` (tipo Null) **  
Un valore nullo. Un valore Null di DynamoDB è indicato da:  

```
{ "NULL" : null }
```
Un esempio di utilizzo è:  

```
"attributeValues" : {
   "phoneNumbers" : { "NULL" : null }
}
```

Per ulteriori informazioni su ciascun tipo, consulta la [documentazione di DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html).