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à.
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
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 AWSquelli scalari.
Non è possibile utilizzare AWScome prefisso per tipi di oggetti personalizzati.
La sezione seguente è un riferimento per la digitazione dello schema.
Scalari predefiniti
GraphQL definisce i seguenti scalari predefiniti:
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
ofalse
.
AWS AppSync scalari
AWS AppSync definisce i seguenti scalari:
AWSDate
-
Una stringa di data ISO 8601
estesa nel formato. YYYY-MM-DD
AWSTime
-
Una stringa temporale ISO 8601
estesa nel formato. hh:mm:ss.sss
AWSDateTime
-
Una stringa estesa di data e ora ISO 8601
nel formato. YYYY-MM-DDThh:mm:ss.sssZ
Nota
Gli AWSDateTime
scalari AWSDate
AWSTime
, e possono facoltativamente includere un offset del fuso orario.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 RFC822. 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
). AWSURL
-
Un URL come definito da RFC 1738.
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
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 } }