Sirius.js - Framework node.js untuk service backend, RESTful API, Websocket Server untuk komunikasi real-time dan server GraphQL
Route dasar Sirius.js bisa disimulasikan di Postman. Lihat Collection
Untuk menggunakan framework ini, pertimbangkan kita sudah menginstall dan memahami hal-hal berikut
- NodeJS terinstall *
- NPM terinstall *
- Pengetahuan tentang NodeJS (Objects, Modules) *
- Pengetahuan tentang ECMAScript 6 *
- Pengetahuan tentang Object Relational Mapping (Sequelize) *
- Pengetahuan tentang routing & middleware (ExpressJS)
- Pengetahuan dasar Babel compiler
- Konsep event & broadcast pada websocket
- Konsep migration & seed
(*) Harus terinstall/diketahui
Jika prasyarat sudah terpenuhi, maka anda sudah bisa mulai menggunakan Sirius.js. Download release Sirius.js disini atau clone langsung dari git repository
$ git clone https://github.com/edgarjeremy/sirius.js project-name
Jika kopian Sirius.js sudah berada di mesin anda, selanjutnya jalankan perintah ini untuk menginstall module dasar yang dibutuhkan dalam internal framework.
$ cd project-name
$ npm install
Semua konfigurasi framework Sirius.js terdefinisikan sebagai object pada file ./config.json
Konfigurasi server berhubungan dengan bagaimana Sirius.js menjalankan servicenya sebagai server yang akan melayani request dari client. Konfigurasi ini terdapat di bagian server
dan terdiri dari beberapa field :
- Protocol (Protokol apa yang digunakan Sirius.js untuk berjalan =>
'http'
|'https'
) - Port (Port tempat Sirius.js untuk mendengarkan request)
Konfigurasi ini berfungsi mengatur bagaimana request masuk ke infrastruktur Sirius.js. Konfigurasi ini terdapat di bagian request
dan terdiri dari beberapa field :
- Limit (Seberapa besar batas pengiriman paket dari client ke server)
- Show POST (Boolean apakah field POST yang dikirim dari client disertakan dalam response server (debugging only))
- Show GET (Boolean apakah field GET yang dikirim dari client disertakan dalam response server (debugging only))
Konfigurasi ini mengatur session dalam server. Konfigurasi ini terdapat di bagian session
dan terdiri dari beberapa field :
- Secret (String rahasia yang akan dipakai sebagai kunci untuk enkripsi session)
- MaxAge (Total waktu maksimum suatu session disimpan di server dalam milidetik)
Konfigurasi ini mengatur folder tempat file-file core berada. Konfigurasi ini terdapat di bagian folders
dan terdiri dari beberapa field :
- Routes (Folder route)
- Models (Folder model)
Konfigurasi database berhubungan dengan bagaimana Sirius.js berkomunikasi dengan server database. Konfigurasi ini terdapat di bagian database
dan terdiri dari beberapa field :
- Host (Hostname/Domain/IP tempat server database berjalan)
- User (Username untuk otentikasi database)
- Password (Password untuk otentikasi database)
- Database (Nama database default untuk koneksi yang berjalan)
- Port (Port tempat berjalannya service database ke host yang sudah ditentukan)
- Dialect (Engine/Driver database =>
'mysql'
|'sqlite'
|'postgres'
|'mssql'
)
Konfigurasi ini mengatur bagaimana enkripsi berjalan. Konfigurasi ini terdapat di bagian encryption
dan terdiri dari beberapa field :
- Salt Rounds (Salt yang dipakai untuk enkripsi (baca))
Konfigurasi yang mengatur migrasi database dan sinkronisasi model. Terdapat di bagian migration
dan terdiri dari beberapa field :
- Watch (Boolean apakah perubahan field model langsung di terapkan di database setiap server berjalan/restart)
- Renew (Boolean apakah semua definisi tabel di-drop dan di buat baru di database setiap server berjalan/restart)
Konfigurasi tentang lingkungan aplikasi. Terdapat di bagian environment
dan bernilai development
(untuk server dalam masa pengembangan) dan production
(untuk server siap pakai)
Konfigurasi ini mengatur pre-flight request dan origin tempat dia berasal. Terdapat di bagian cors
dan dapat bernilai suatu string nama domain/ip address, asterisk *
(artinya semua domain disetujui) atau array yang berisi string domain/ip address yang diizinkan.
Bagian ini menjelaskan beberapa konsep fundamental yang dipakai framework ini untuk mengembangkan aplikasi
Route adalah suatu poin dalam aplikasi yang akan dieksekusi ketika user melakukan hit pada suatu endpoint yang sudah ditentukan untuk poin tersebut. Pikirkan route seperti sebuah controller yang menjadi penghantara antara user untuk berinteraksi dengan data-layer.
Secara default, routes didefinisikan terpisah dalam tiap file dalam folder routes
(folder ini dapat dirubah di ./config.json
(baca konfigurasi)).
File routes adalah module CommonJS yang mengeksport fungsi yang mereturn object express.Router
. Baca Express Routing untuk mempelajari lebih lanjut konsep router ExpressJS
Contoh fungsi router memiliki struktur seperti ini
/**
* Api routes (./routes/api.js)
*/
import models from "../models";
function api(app, socketListener) {
let router = app.get("express").Router();
/**
* Router disini..
*/
router.get("/index", (req, res) => {
res.setStatus(res.OK);
res.setData("Hello world!");
res.go();
});
router.get("/users", async (req, res) => {
res.setStatus(res.OK);
res.setData(await models.user.findAll());
res.go();
});
return router;
}
module.exports = api;
Fungsi router ini akan menerima 2 parameter yaitu app
(instance dari object express app), dan socketListener
(object dari listener websocket ./websocket/listener.js
).
Framework sudah otomatis meng-attach object express dalam app sebagai constant. Object express itu dipakai untuk mengambil object Router
yang akan dipakai untuk mendefinisikan enpoint-endpoint yang akan dipakai dalam aplikasi.
Konsep untuk mendefiniskan endpoint adalah sebagai berikut :
-
Setiap file router mendefinisikan satu
basepoint
berdasarkan nama filenya. -
basepoint
adalah segment pertama dari URI -
endpoint
adalah segment kedua dari URI. Ditentukan berdasarkan route yang didefinisikan dalam router. -
Jika diasumsikan framework berjalan di local machine, menggunakan port default (8080) dan definisi route seperti pada contoh diatas (
./routes/api.js
) maka:-
Akses :
http://localhost:8080
-
Basepoint :
/api
(sesuai dengan nama file routes tanpa ekstensiapi.js
) -
Endpoint :
/index
/users
-
Dengan demikian, maka daftar full URI
endpoint
yang tersedia dengan contoh sejauh ini adalah :HTTP Verb Basepoint Endpoint URI GET /api /index http://localhost:8080/api/index GET /api /users http://localhost:8080/api/users
-
-
Tentang parameter, query, body menggunakan metode yang sama dengan ExpressJS