Request Validation
Pada custom script dengan jenis trigger Remote function dan HTTP (Webhook & Raw), pengembang dapat menuliskan validation script (validation.gql) untuk melakukan validasi terhadap request data. Penulisan validation script menggunakan sintaks DSL dari GraphQL yang kemudian dikonversi secara otomatis menjadi JSON-Schema.
Terdapat dua buah default type yang digunakan dalam file validator:
- query
setiap property pada bagian ini mendefinisikan validasi pada query parameter (query string). - body
setiap property pada bagian ini mendefinisikan validasi pada request body.
Built-in types
Scalar
Scalar merupakan tipe primitif seperti dalam bahasa pemrograman lainnya. Daftar scalar yang didukung adalah:
- Int: bilangan bulat (Integer)
- Float: bilangan riil (Floating)
- String: baris karakter
- Boolean: true or false
- ID: ekivalen dengan string
Enum
Enum merupakan salah satu tipe data yang hanya bisa memiliki nilai sesuai dengan daftar elemen yang didefinisikan sebelumnya. Definisi yang dibuat menggunakan tipe string
.
List
List merupakan representasi sebuah array berisi tipe lain.
Misalnya pada contoh berikut:
- penulis adalah field berisi array of string dan tidak boleh memiliki element yang berisi null
- telepon adalah field berisi array of string atau null
Union
Union merupakan tipe di mana sebuah field dapat berisi lebih dari satu jenis tipe.
Validation directives
Pengembang dapat menambahkan directive @validate beserta argumen di dalam file validator untuk membuat validasi yang lebih spesifik. Argumen yang didukung merujuk pada spesifikasi JSON-Schema.
Penggunaan @validate tidak wajib. Pengembang dapat menambahkan jika memang diperlukan.
Int dan Float
argument | keterangan |
---|---|
minimum | nilai minimum yang dibolehkan (number) |
maximum | nilai maksimum yang dibolehkan (number) |
String
argument | keterangan |
---|---|
maxLength | panjang string maksimum (number) |
minLength | panjang string minimum (number) |
pattern | regex untuk validasi konten / format dengan format yang merujuk pada penggunaan RegExp |
format | jenis format penulisan: date, time, date-time, uri, email, hostname, ipv4, ipv6, regex, uuid |
List
argument | keterangan |
---|---|
maxItems | jumlah elemen maksimum dalam array/list (number) |
minItems | jumlah elemen minimum dalam array/list (number) |
uniqueItems | elemen dalam list/array harus unik (boolean) |
Contoh
Validasi pada data (body)
Pada contoh ini, field totalHalaman
tidak wajib.