

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Skalare Typen in GraphQL
<a name="scalars"></a>

Ein GraphQL-Objekttyp hat einen Namen und Felder, und diese Felder können Unterfelder haben. Letztlich müssen die Felder eines Objekttyps in *skalare* Typen aufgelöst werden, die die Blätter der Abfrage darstellen. Weitere Informationen zu Objekttypen und Skalaren finden Sie unter [Schemas and types](https://graphql.org/learn/schema/) auf der GraphQL-Website.

Zusätzlich zum Standardsatz von GraphQL-Skalaren können Sie damit AWS AppSync auch die **dienstdefinierten** Skalare verwenden, die mit dem Präfix beginnen. *AWS* AWS AppSync unterstützt nicht die Erstellung von **benutzerdefinierten (benutzerdefinierten**) Skalaren. Sie müssen entweder den Standard oder *AWS*Skalare verwenden. 

Sie können es nicht *AWS*als Präfix für benutzerdefinierte Objekttypen verwenden.

Der folgende Abschnitt ist eine Referenz für die Schematypisierung.

## Standard-Skalare
<a name="graph-ql-base-scalars"></a>

GraphQL definiert die folgenden Standardskalare:

### Liste der Standard-Skalare
<a name="graph-ql-base-scalars-list"></a>

`ID`  
Ein eindeutiger Bezeichner für ein Objekt. Dieser Skalar ist wie ein serialisiert, soll `String` aber nicht für Menschen lesbar sein.

`String`  
Eine UTF-8-Zeichenfolge.

`Int`  
Ein ganzzahliger Wert zwischen - (2 31) und 2 31 -1.

`Float`  
Ein IEEE 754-Gleitkommawert.

`Boolean`  
Ein boolescher Wert, entweder `true` oder `false`.

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

AWS AppSync definiert die folgenden Skalare:

### AWS AppSync Liste der Skalare
<a name="graph-ql-aws-appsync-scalars-list"></a>

`AWSDate`  
Eine erweiterte [ISO 8601-Datumszeichenfolge](https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates) im Format. `YYYY-MM-DD`

`AWSTime`  
Eine erweiterte [ISO 8601-Zeitzeichenfolge](https://en.wikipedia.org/wiki/ISO_8601#Times) im Format. `hh:mm:ss.sss`

`AWSDateTime`  
Eine erweiterte [ISO 8601-Datums- und Uhrzeitzeichenfolge](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) im Format. `YYYY-MM-DDThh:mm:ss.sssZ`

**Anmerkung**  
Die `AWSDateTime` Skalare `AWSDate``AWSTime`, und können optional einen [Zeitzonen-Offset](https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators) enthalten. Zum Beispiel `1970-01-01+05:30` sind die Werte `1970-01-01Z``1970-01-01-07:00`, und alle gültig für`AWSDate`. Der Zeitzonen-Offset muss entweder `Z` (UTC) oder ein Offset in Stunden und Minuten (und optional in Sekunden) sein. Beispiel, `±hh:mm:ss`. Das Sekundenfeld im Zeitzonen-Offset wird als gültig angesehen, obwohl es nicht Teil des ISO 8601-Standards ist.

`AWSTimestamp`  
Ein ganzzahliger Wert, der die Anzahl der Sekunden davor oder danach `1970-01-01-T00:00Z` angibt.

`AWSEmail`  
Eine E-Mail-Adresse in dem in [RFC 822](https://tools.ietf.org/html/rfc822) definierten Format`local-part@domain-part`.

`AWSJSON`  
Eine JSON-Zeichenfolge. Jedes gültige JSON-Konstrukt wird automatisch analysiert und als Zuordnungen, Listen oder Skalarwerte und nicht als wörtliche Eingabezeichenfolgen in den Resolver-Code geladen. Zeichenketten ohne Anführungszeichen oder anderweitig ungültiges JSON führen zu einem GraphQL-Validierungsfehler.

`AWSPhone`  
Eine Telefonnummer. Dieser Wert wird als Zeichenfolge gespeichert. Telefonnummern können entweder Leerzeichen oder Bindestriche enthalten, um Zifferngruppen voneinander zu trennen. Bei Telefonnummern ohne Landesvorwahl wird davon ausgegangen, dass es sich um US-/nordamerikanische Nummern handelt, die dem [North American Numbering](https://en.wikipedia.org/wiki/North_American_Numbering_Plan) Plan (NANP) entsprechen.

`AWSURL`  
[Eine URL gemäß der Definition in RFC 1738.](https://tools.ietf.org/html/rfc1738) Zum Beispiel oder. `https://www.amazon.com/dp/B000NZW3KC/` `mailto:example@example.com` URLsmuss ein Schema (`http`,`mailto`) enthalten und darf nicht zwei Schrägstriche (`//`) im Pfadteil enthalten.

`AWSIPAddress`  
Eine gültige IPv4 IPv6 Oder-Adresse. IPv4 Adressen werden in Vierpunkt-Notation () erwartet. `123.12.34.56` IPv6 Adressen werden in einem Format ohne Klammern und durch Doppelpunkte getrennt erwartet (). `1a2b:3c4b::1234:4567` Sie können ein optionales CIDR-Suffix (`123.45.67.89/16`) angeben, um die Subnetzmaske anzugeben.

## Beispiel für die Verwendung eines Schemas
<a name="example-schema-usage"></a>

Das folgende GraphQL-Beispielschema verwendet alle benutzerdefinierten Skalare als „Objekt“ und zeigt die Resolver-Anforderungs- und Antwortvorlagen für grundlegende Put-, Get- und List-Operationen. Schließlich zeigt das Beispiel, wie Sie dies beim Ausführen von Abfragen und Mutationen verwenden können.

```
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
}
```

So `putObject` könnte eine Anforderungsvorlage für aussehen. A `putObject` verwendet eine `PutItem` Operation, um ein Element in Ihrer Amazon DynamoDB-Tabelle zu erstellen oder zu aktualisieren. Beachten Sie, dass dieser Codeausschnitt keine konfigurierte Amazon DynamoDB-Tabelle als Datenquelle hat. Dies wird nur als Beispiel verwendet:

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

Die Antwortvorlage für `putObject` gibt die Ergebnisse zurück:

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

So `getObject` könnte eine Anforderungsvorlage für aussehen. A `getObject` verwendet eine `GetItem` Operation, um eine Reihe von Attributen für das Element zurückzugeben, wenn der Primärschlüssel angegeben ist. Beachten Sie, dass dieser Codeausschnitt keine konfigurierte Amazon DynamoDB-Tabelle als Datenquelle hat. Dies wird nur als Beispiel verwendet:

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

Die Antwortvorlage für `getObject` gibt die Ergebnisse zurück:

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

So `listObjects` könnte eine Anforderungsvorlage für aussehen. A `listObjects` verwendet eine `Scan` Operation, um ein oder mehrere Elemente und Attribute zurückzugeben. Beachten Sie, dass dieser Codeausschnitt keine konfigurierte Amazon DynamoDB-Tabelle als Datenquelle hat. Dies wird nur als Beispiel verwendet:

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

Die Antwortvorlage für `listObjects` gibt die Ergebnisse zurück:

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

Im Folgenden finden Sie einige Beispiele für die Verwendung dieses Schemas mit GraphQL-Abfragen:

```
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
    }
}
```