

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Jenis skalar di GraphQL
<a name="scalars"></a>

Jenis objek GraphQL memiliki nama dan bidang, dan bidang tersebut dapat memiliki sub-bidang. Pada akhirnya, bidang tipe objek harus diselesaikan ke jenis *skalar*, yang mewakili daun kueri. Untuk informasi selengkapnya tentang jenis objek dan skalar, lihat [Skema dan tipe](https://graphql.org/learn/schema/) di situs web GraphQL.

Selain set default skalar GraphQL AWS AppSync , Anda juga dapat menggunakan skalar yang ditentukan layanan **yang dimulai dengan** awalan. *AWS* AWS AppSync tidak mendukung pembuatan skalar yang **ditentukan pengguna** (khusus). Anda harus menggunakan default atau *AWS*skalar. 

Anda tidak dapat menggunakan *AWS*sebagai awalan untuk jenis objek kustom.

Bagian berikut adalah referensi untuk pengetikan skema.

## Skalar default
<a name="graph-ql-base-scalars"></a>

GraphQL mendefinisikan skalar default berikut:

### Daftar skalar default
<a name="graph-ql-base-scalars-list"></a>

`ID`  
Pengidentifikasi unik untuk suatu objek. Skalar ini diserialkan seperti a `String` tetapi tidak dimaksudkan untuk dapat dibaca manusia.

`String`  
Urutan karakter UTF-8.

`Int`  
Nilai integer antara - (2 31) dan 2 31 -1.

`Float`  
Nilai floating point IEEE 754.

`Boolean`  
Nilai Boolean, baik `true` ataupun `false`.

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

AWS AppSync mendefinisikan skalar berikut:

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

`AWSDate`  
String [tanggal ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates) yang diperpanjang dalam format. `YYYY-MM-DD`

`AWSTime`  
String [waktu ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Times) yang diperpanjang dalam format. `hh:mm:ss.sss`

`AWSDateTime`  
String [tanggal dan waktu ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) yang diperpanjang dalam format. `YYYY-MM-DDThh:mm:ss.sssZ`

**catatan**  
The`AWSDate`,`AWSTime`, dan `AWSDateTime` skalar secara opsional dapat menyertakan offset [zona waktu](https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators). Misalnya, nilai`1970-01-01Z`,`1970-01-01-07:00`, dan `1970-01-01+05:30` semuanya valid untuk`AWSDate`. Offset zona waktu harus berupa `Z` (UTC) atau offset dalam jam dan menit (dan, opsional, detik). Misalnya, `±hh:mm:ss`. Bidang detik di offset zona waktu dianggap valid meskipun bukan bagian dari standar ISO 8601.

`AWSTimestamp`  
Nilai integer yang mewakili jumlah detik sebelum atau sesudah`1970-01-01-T00:00Z`.

`AWSEmail`  
Alamat email dalam format `local-part@domain-part` seperti yang didefinisikan oleh [RFC 822](https://tools.ietf.org/html/rfc822).

`AWSJSON`  
Sebuah string JSON. Setiap konstruksi JSON yang valid secara otomatis diurai dan dimuat dalam kode resolver sebagai peta, daftar, atau nilai skalar daripada sebagai string input literal. String yang tidak dikutip atau JSON yang tidak valid menghasilkan kesalahan validasi GraphQL.

`AWSPhone`  
Nomor telepon. Nilai ini disimpan sebagai string. Nomor telepon dapat berisi spasi atau tanda hubung untuk memisahkan grup digit. Nomor telepon tanpa kode negara diasumsikan sebagai nomor AS/Amerika Utara yang mengikuti [Rencana Penomoran Amerika Utara](https://en.wikipedia.org/wiki/North_American_Numbering_Plan) (NANP).

`AWSURL`  
URL seperti yang didefinisikan oleh [RFC 1738](https://tools.ietf.org/html/rfc1738). Misalnya, `https://www.amazon.com/dp/B000NZW3KC/` atau`mailto:example@example.com`. URLsharus berisi skema (`http`,`mailto`) dan tidak dapat berisi dua garis miring (`//`) di bagian jalur.

`AWSIPAddress`  
Valid IPv4 atau IPv6 alamat. IPv4 alamat diharapkan dalam notasi quad-dotted (). `123.12.34.56` IPv6 alamat diharapkan dalam format non-kurung, dipisahkan titik dua (). `1a2b:3c4b::1234:4567` Anda dapat menyertakan akhiran CIDR opsional (`123.45.67.89/16`) untuk menunjukkan subnet mask.

## Contoh penggunaan skema
<a name="example-schema-usage"></a>

Contoh berikut skema GraphQL menggunakan semua skalar kustom sebagai “objek” dan menunjukkan permintaan resolver dan template respons untuk operasi put, get, dan list dasar. Terakhir, contoh menunjukkan bagaimana Anda dapat menggunakan ini saat menjalankan kueri dan mutasi.

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

Inilah yang `putObject` mungkin terlihat seperti template permintaan. A `putObject` menggunakan `PutItem` operasi untuk membuat atau memperbarui item di tabel Amazon DynamoDB Anda. Perhatikan bahwa cuplikan kode ini tidak memiliki tabel Amazon DynamoDB yang dikonfigurasi sebagai sumber data. Ini hanya digunakan sebagai contoh:

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

Template respon untuk `putObject` mengembalikan hasil:

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

Inilah yang `getObject` mungkin terlihat seperti template permintaan. A `getObject` menggunakan `GetItem` operasi untuk mengembalikan satu set atribut untuk item yang diberikan kunci utama. Perhatikan bahwa cuplikan kode ini tidak memiliki tabel Amazon DynamoDB yang dikonfigurasi sebagai sumber data. Ini hanya digunakan sebagai contoh:

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

Template respon untuk `getObject` mengembalikan hasil:

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

Inilah yang `listObjects` mungkin terlihat seperti template permintaan. A `listObjects` menggunakan `Scan` operasi untuk mengembalikan satu atau lebih item dan atribut. Perhatikan bahwa cuplikan kode ini tidak memiliki tabel Amazon DynamoDB yang dikonfigurasi sebagai sumber data. Ini hanya digunakan sebagai contoh:

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

Template respon untuk `listObjects` mengembalikan hasil:

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

Berikut ini adalah beberapa contoh penggunaan skema ini dengan kueri 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
    }
}
```