Library Engine Pagonila digunakan sebagai server Backend. Engine ini merupakan sebuah instance ExpressJS yang dibungkus dengan beberapa fitur otomatis seperti:
Engine dapat diakses melalui namespace Backend
pada path /your-blueprint/engine
.
Pada namespace Backend
terdapat class Engine
.
Kelas Backend.Engine
tidak memiliki konstruktor khusus, namun harus diinisialisasi dengan
metode init
dengan parameter Backend.SystemParam
.
Metode implement()
yang ada pada kelas Engine
hanya akan dijalankan setelah metode init
dijalankan
terlebih dahulu. Metode implement()
memiliki satu parameter berjenis ModuleStub
, dimana ModuleSub
adalah sebuah interface daftar spesifikasi API dengan format seperti berikut:
path
dan method
merupakan endpoint path yang telah didefinisikan sebelumnya pada spesifikasi API.
Misal pada spesifikasi API berikut:
akan menghasilkan sebuah interface ModuleStub
kira-kira seperti ini:
Fungsi lambda fn
selanjutnya harus diimplementasi sebagai logika dari proses API
tersebut. Melalui mekanisme implementasi API seperti ini, pengguna tidak perlu lagi melakukan
validasi request dari pengguna karena otomatis telah divalidasi dan ditransformasi ke format
sesuai spesifikasi API oleh backend Pagonila.
Setiap kali fungsi fn
dieksekusi berarti data telah sesuai dengan format yang telah dituliskan
pada spesifikasi API.
Dalam memberikan respon nilai kembalian dari sebuah API, Pagonila memiliki mekanisme khusus berdasarkan dua kasus:
Respons berhasil akan dikembalikan dengan kode http 200
. Saat ini Pagonila hanya mendukung kode
200 sebagai hasil respon berhasil. Selain itu, pengguna juga harus disiplin dalam mengembalikan
respon sesuai dengan struktur data yang telah didefinisikan pada spesifikasi API.
Misal menggunakan contoh ModuleStub
pada contoh di atas, implementasi akan kurang-lebih seperti ini:
dengan return
statement selain struktur data Schema.PostResponseMasuk
, Typescript akan
mengeluarkan pesan kompilasi error.
Dalam mengembalikan respon gagal, Pagonila menggunakan mekanisme yang sederhana yaitu menggunakan
throws Error(error: string)
. Ketika melakukan throws Error, terdapat dua macam cara yang dapat
dilakukan:
Pengembalian respon error tanpa kode HTTP dapat dilakukan dengan langsung melepaskan Error dengan parameter string.
Pesan error tanpa kode HTTP otomatis mengembalikan kode HTTP error 400
. Pengembalian respon error
dengan kode HTTP dilakukan dengan menuliskan parameter string yang didahului kode HTTP lalu
dipisah dengan kolon (titik dua), dilanjutkan dengan pesan error-nya.
Contoh diatas menghasilkan pesan error Anda tidak diijinkan mengakses akun ini
dengan kode
respon HTTP 401
.