Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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
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 AWSskalar.
Anda tidak dapat menggunakan AWSsebagai awalan untuk jenis objek kustom.
Bagian berikut adalah referensi untuk pengetikan skema.
Skalar default
GraphQL mendefinisikan skalar default berikut:
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
ataupunfalse
.
AWS AppSync skalar
AWS AppSync mendefinisikan skalar berikut:
AWSDate
-
String tanggal ISO 8601
yang diperpanjang dalam format. YYYY-MM-DD
AWSTime
-
String waktu ISO 8601
yang diperpanjang dalam format. hh:mm:ss.sss
AWSDateTime
-
String tanggal dan waktu ISO 8601
yang diperpanjang dalam format. YYYY-MM-DDThh:mm:ss.sssZ
catatan
TheAWSDate
,AWSTime
, dan AWSDateTime
skalar secara opsional dapat menyertakan offset zona waktu1970-01-01Z
,1970-01-01-07:00
, dan 1970-01-01+05:30
semuanya valid untukAWSDate
. 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. 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
(NANP). AWSURL
-
URL seperti yang didefinisikan oleh RFC 1738
. Misalnya, https://www.amazon.com/dp/B000NZW3KC/
ataumailto: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
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 } }