

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

# Tipi scalari in GraphQL
<a name="scalars"></a>

Un tipo di oggetto GraphQL ha un nome e campi e tali campi possono avere sottocampi. In definitiva, i campi di un tipo di oggetto devono risolversi in tipi *scalari*, che rappresentano i fogli della query. Per ulteriori informazioni sui tipi di oggetti e sugli scalari, consulta [Schemi e tipi sul sito](https://graphql.org/learn/schema/) Web GraphQL.

Oltre al set predefinito di scalari GraphQL, consente AWS AppSync anche di utilizzare gli scalari **definiti dal servizio che iniziano con** il prefisso. *AWS* AWS AppSync **non supporta la creazione di scalari definiti dall'utente (personalizzati).** È necessario utilizzare gli scalari predefiniti o *AWS*quelli scalari. 

Non è possibile utilizzare *AWS*come prefisso per tipi di oggetti personalizzati.

La sezione seguente è un riferimento per la digitazione dello schema.

## Scalari predefiniti
<a name="graph-ql-base-scalars"></a>

GraphQL definisce i seguenti scalari predefiniti:

### Elenco degli scalari predefiniti
<a name="graph-ql-base-scalars-list"></a>

`ID`  
Un identificatore univoco per un oggetto. Questo scalare è serializzato come un `String` ma non è pensato per essere leggibile dall'uomo.

`String`  
Una sequenza di caratteri UTF-8.

`Int`  
Un valore intero compreso tra - (2 31) e 2 31 -1.

`Float`  
Un valore in virgola mobile IEEE 754.

`Boolean`  
Un valore booleano, `true` o `false`.

## AWS AppSync scalari
<a name="graph-ql-aws-appsync-scalars"></a>

AWS AppSync definisce i seguenti scalari:

### AWS AppSync elenco degli scalari
<a name="graph-ql-aws-appsync-scalars-list"></a>

`AWSDate`  
Una stringa di [data ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates) estesa nel formato. `YYYY-MM-DD`

`AWSTime`  
Una stringa [temporale ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Times) estesa nel formato. `hh:mm:ss.sss`

`AWSDateTime`  
Una stringa estesa di [data e ora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) nel formato. `YYYY-MM-DDThh:mm:ss.sssZ`

**Nota**  
Gli `AWSDateTime` scalari `AWSDate``AWSTime`, e possono facoltativamente includere un offset del fuso [orario.](https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators) Ad esempio, i valori `1970-01-01Z``1970-01-01-07:00`, e `1970-01-01+05:30` sono tutti validi per. `AWSDate` L'offset del fuso orario deve essere `Z` (UTC) o un offset in ore e minuti (e, facoltativamente, secondi). Ad esempio `±hh:mm:ss`. Il campo dei secondi nell'offset del fuso orario è considerato valido anche se non fa parte dello standard ISO 8601.

`AWSTimestamp`  
Un valore intero che rappresenta il numero di secondi prima o dopo. `1970-01-01-T00:00Z`

`AWSEmail`  
Un indirizzo e-mail nel formato `local-part@domain-part` definito da [RFC](https://tools.ietf.org/html/rfc822) 822.

`AWSJSON`  
Una stringa JSON. Qualsiasi costrutto JSON valido viene automaticamente analizzato e caricato nel codice del resolver come mappe, elenchi o valori scalari anziché come stringhe di input letterali. Le stringhe senza virgolette o il codice JSON altrimenti non valido generano un errore di convalida GraphQL.

`AWSPhone`  
Un numero di telefono. Questo valore viene memorizzato come stringa. I numeri di telefono possono contenere spazi o trattini per separare gruppi di cifre. Si presume che i numeri di telefono senza prefisso internazionale siano numeri statunitensi o nordamericani che aderiscono al North American Numbering Plan ([NANP](https://en.wikipedia.org/wiki/North_American_Numbering_Plan)).

`AWSURL`  
[Un URL come definito da RFC 1738.](https://tools.ietf.org/html/rfc1738) Ad esempio, `https://www.amazon.com/dp/B000NZW3KC/` o. `mailto:example@example.com` URLsdeve contenere uno schema (`http`,`mailto`) e non può contenere due barre (`//`) nella parte del percorso.

`AWSIPAddress`  
Un IPv6 indirizzo IPv4 o valido. IPv4 gli indirizzi sono previsti in notazione quadrupla (). `123.12.34.56` IPv6 gli indirizzi sono previsti in formato non tra parentesi e separati da due punti (). `1a2b:3c4b::1234:4567` È possibile includere un suffisso CIDR opzionale () `123.45.67.89/16` per indicare la subnet mask.

## Esempio di utilizzo dello schema
<a name="example-schema-usage"></a>

Lo schema GraphQL di esempio seguente utilizza tutti gli scalari personalizzati come «oggetto» e mostra i modelli di richiesta e risposta del resolver per le operazioni di base di put, get e list. Infine, l'esempio mostra come è possibile utilizzarlo durante l'esecuzione di query e mutazioni.

```
type Mutation {
    putObject(
        email: AWSEmail,
        json: AWSJSON,
        date: AWSDate,
        time: AWSTime,
        datetime: AWSDateTime,
        timestamp: AWSTimestamp,
        url: AWSURL,
        phoneno: AWSPhone,
        ip: AWSIPAddress
    ): Object
}

type Object {
    id: ID!
    email: AWSEmail
    json: AWSJSON
    date: AWSDate
    time: AWSTime
    datetime: AWSDateTime
    timestamp: AWSTimestamp
    url: AWSURL
    phoneno: AWSPhone
    ip: AWSIPAddress
}

type Query {
    getObject(id: ID!): Object
    listObjects: [Object]
}

schema {
    query: Query
    mutation: Mutation
}
```

Ecco come `putObject` potrebbe apparire un modello di richiesta. A `putObject` utilizza un'`PutItem`operazione per creare o aggiornare un elemento nella tabella Amazon DynamoDB. Tieni presente che questo frammento di codice non ha una tabella Amazon DynamoDB configurata come origine dati. Questo viene usato solo come esempio:

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key" : {
        "id": $util.dynamodb.toDynamoDBJson($util.autoId()),
    },
    "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
```

Il modello di risposta per `putObject` restituisce i risultati:

```
$util.toJson($ctx.result)
```

Ecco come `getObject` potrebbe apparire un modello di richiesta. A `getObject` utilizza un'`GetItem`operazione per restituire un insieme di attributi per l'elemento a cui è stata assegnata la chiave primaria. Tieni presente che questo frammento di codice non ha una tabella Amazon DynamoDB configurata come origine dati. Questo viene usato solo come esempio:

```
{
    "version": "2017-02-28",
    "operation": "GetItem",
    "key": {
        "id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
    }
}
```

Il modello di risposta per `getObject` restituisce i risultati:

```
$util.toJson($ctx.result)
```

Ecco come `listObjects` potrebbe apparire un modello di richiesta. A `listObjects` utilizza un'`Scan`operazione per restituire uno o più elementi e attributi. Tieni presente che questo frammento di codice non ha una tabella Amazon DynamoDB configurata come origine dati. Questo viene usato solo come esempio:

```
{
    "version" : "2017-02-28",
    "operation" : "Scan",
}
```

Il modello di risposta per `listObjects` restituisce i risultati:

```
$util.toJson($ctx.result.items)
```

Di seguito sono riportati alcuni esempi di utilizzo di questo schema con le query GraphQL:

```
mutation CreateObject {
    putObject(email: "example@example.com"
        json: "{\"a\":1, \"b\":3, \"string\": 234}"
        date: "1970-01-01Z"
        time: "12:00:34."
        datetime: "1930-01-01T16:00:00-07:00"
        timestamp: -123123
        url:"https://amazon.com"
        phoneno: "+1 555 764 4377"
        ip: "127.0.0.1/8"
    ) {
        id
        email
        json
        date
        time
        datetime
        url
        timestamp
        phoneno
        ip
    }
}

query getObject {
    getObject(id:"0d97daf0-48e6-4ffc-8d48-0537e8a843d2"){
        email
        url
        timestamp
        phoneno
        ip
    }
}

query listObjects {
    listObjects {
        json
        date
        time
        datetime
    }
}
```