Repository Pekerjaan KP PT.Xirka Silicon Technology dengan Topik Website SmartLog
Server API ini dibuat dengan menggunakan ExpressJS yang merupakan web framework untuk Node.JS dan menggunakan postgreSQL untuk database nya. Server ini dapat menerima HTTP request method GET, POST, PUT, dan DELETE dengan dilengkapi autentikasi menggunakan token.
- PostgreSQL
$ [sudo] apt install postgresql
- Node.JS and NPM (NodeJS Package Manager)
$ [sudo] apt install nodejs
$ [sudo] apt install npm
Database dibuat menggunakan 2 tabel dengan format berikut:
- Tabel card
column | Data Type | Modifiers | Description |
---|---|---|---|
card_id | varchar(30) | not null | primary key |
nim | varchar(30) | not null | |
name | varchar(30) | not null | |
instansi | varchar(30) |
- Tabel terminal
column | Data Type | Modifiers | Description |
---|---|---|---|
terminal_id | varchar(30) | not null | primary key |
room | varchar(30) | not null | |
instansi | varchar(30) |
Penjelasan tentang tipe data di postgreSQL dapat dilihat di http://www.postgresqltutorial.com/postgresql-data-types/
Langkah pembuatan database dan tabel
- Buat database baru
$ sudo -u postgres psql
postgres=# create database <nama database>;
- Buat user baru dan berikan akses penuh ke database baru yang sudah dibuat
postgres=# create user <nama user> with encrypted password '<user password>';
postgres=# grant all privileges on database <nama database> to <nama user>;
postgres=# \q
- Masuk ke database yang telah dibuat
Untuk log in dengan ident based authentication dibutuhkan nama linux user yang sama dengan nama user pada postgresql, jika berbeda dapat ditambahkan dengan cara
sudo adduser <nama user>
$ sudo -i -u <nama user>
$ psql <nama database>
kemudian akan muncul
<nama database>=#
pada terminal
- Buat tabel baru dengan nama card dan terminal menggunakan format seperti diatas
create table card(
card_id varchar(30) primary key,
nim varchar(30) not null,
name varchar(30) not null,
instansi varchar(30)
);
create table terminal(
terminal_id varchar(30) primary key,
room varchar(30) not null,
instansi varchar(30)
);
- Clone repository ini ke komputer server
$ git clone https://github.com/Dimasyoga/xirka.git
- Masuk ke directory repository
cd xirka
, kemudian masukkan perintah:
$ npm install
- Cek settingan database pada file config.js
Nyalakan server dengan memasukkan perintah npm start
pada root directory repository ini
Untuk membuat server menyala di background, dapat digunakan perintah
nohup
ke terminal atau menggunakan modul pm2
- Install package dengan perintah:
$ [sudo] npm install pm2 -g
- Untuk menjalankan server, masukkan perintah
pm2 start
ke terminal pada root directory - Untuk melakukan pengecekan perintah pm2 yang berjalan, masukkan perintah
pm2 list
ke terminal dan akan muncul daftar aplikasi yang berjalan - Untuk menghentikan semua perintah pm2 yang berjalan, masukkan perintah
pm2 stop all
ke terminal - Daftar perintah lengkap dapat dilihat di http://pm2.keymetrics.io/
Server API ini memiliki 4 fungsi utama untuk modifikasi database, fungsi-fungsi tersebut adalah Read, Create, Edit, dan Delete. Keempat fungsi tersebut di jalankan dengan mengirimkan HTTP request yang dapat dilihat pada tabel di bawah
Function | Method | URL | Header | Body | Description |
---|---|---|---|---|---|
Read Card | GET | {IP Address}/card | token | Mengambil semua data pada tabel card | |
Read Terminal | GET | {IP Address}/terminal | token | Mengambil semua data pada tabel terminal | |
Read Card by ID | GET | {IP Address}/card/{id} | token | Mengambil satu baris data pada tabel card dengan kolom card_id = id | |
Read Terminal by ID | GET | {IP Address}/terminal/{id} | token | Mengambil satu baris data pada tabel terminal dengan kolom terminal_id = id | |
Create Card | POST | {IP Address}/card | token | card_id, nim, name, instansi | Membuat baris baru pada tabel card |
Create Terminal | POST | {IP Address}/terminal | token | terminal_id, room, instansi | Membuat baris baru pada tabel terminal |
Edit Card | PUT | {IP Address}/card/{id} | token | nim, name, instansi | Mengubah data di tabel card pada baris dengan card_id = id |
Edit Terminal | PUT | {IP Address}/terminal/{id} | token | room, instansi | Mengubah data di tabel terminal pada baris dengan terminal_id = id |
Delete Card | DELETE | {IP Address}/card/{id} | token | Menghapus data di tabel card pada baris dengan card_id = id | |
Delete Terminal | DELETE | {IP Address}/terminal/{id} | token | Menghapus data di tabel terminal pada baris dengan terminal_id = id | |
Get Auth Token | POST | {IP Address}/login | username, password | Mengambil token untuk autentikasi request lain, akan didapat response dari server berupa token |
Semua autentikasi dilakukan dengan cara memberikan header pada setiap request dengan format 'authentication:{token}' atau 'x-access-token:{token}'
- Dimas Yoga Email : dimasyogapra@gmail.com