Skip to content

Repository Pekerjaan KP Xirka Topik Website Smartcard Log - Backend server API

Notifications You must be signed in to change notification settings

Dimasyoga/Server-API-Magang-Xirka

Repository files navigation

API Database Server SmartLog Xirka

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.

Table of Contents

  1. Prerequisites
  2. Installation
  3. Run Server
  4. API Request
  5. Author

Prerequisites

  • PostgreSQL
$ [sudo] apt install postgresql
  • Node.JS and NPM (NodeJS Package Manager)
$ [sudo] apt install nodejs
$ [sudo] apt install npm

Installation

Database PostgreSQL

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

  1. Buat database baru
$ sudo -u postgres psql
postgres=# create database <nama database>;
  1. 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
  1. 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

  1. 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)
);

Server Node.JS

  1. Clone repository ini ke komputer server
$ git clone https://github.com/Dimasyoga/xirka.git
  1. Masuk ke directory repository cd xirka, kemudian masukkan perintah:
$ npm install
  1. Cek settingan database pada file config.js

Run Server

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

Penggunaan Package 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/

API Request

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

API Request Table

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}'

Author

About

Repository Pekerjaan KP Xirka Topik Website Smartcard Log - Backend server API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published