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.