Anda di halaman 1dari 11

Suminar Ariwibowo Information Systems Program Web Apps Development

LECTURE NOTES
WEB SERVER
LEARNING OUTCOMES

 Mahasiswa diharapkan mampu memahami Web Server


 Mahasiswa diharapkan mampu memahami dan mengimplementasikan Web Server dengan
menggunakan Nodejs, Express, & Database MySql

OUTLINE MATERI

 Web Server
 Nodejs
 RESTful
 Express
 Routing
 URI Parameter
 Body Parser
 MySql
Suminar Ariwibowo Information Systems Program Web Apps Development

WEB SERVER

Reactjs adalah framework aplikasi web yang befokus pada sisi client atau front-end web application.
Sehingga ketika anda mengembangkan aplikasi web yang membutuhkan operasi-operasi server seperti
pengolahan database, file, atau multi-media stream, anda tidak cukup hanya menggunakan Reactjs
saja. Dibutuhkan sebuah web server untuk menangani operasi-operasi tersebut. Dengan Web Server,
aplikasi Reactjs dapat melakukan operasi-operasi server dengan melakukan request ke server, dan
server akan mengembalikannya (response) ke sisi client.

NODEJS

Nodejs adalah framework aplikasi web server-side yang ditulis dengan bahasa Javascript, berbeda
dengan Javascript di Reactjs yang berjalan pada client-side atau browser saja. Nodejs dapa
berjalan di sistem operasi Windows, Mac OS X, dan Linux. Nodejs memiliki library server HTTP
sendiri sehingga memungkinkannya untuk menjalankan web server tanpa menggunakan aplikasi
web server lain seperti Apache atau Nginx.

Berbeda dengan bahasa pemrograman berbasis server seperti PHP atau ASP yang dijalankan saat
file system dibuka dan membaca source berdasarkan block code, dan mengembalikan content
ke client, Nodejs memilki pendekatan berbeda. Nodejs berjalan dengan sistem single-threaded
dan non-blocking artinya hanya menjalankan proses yang direquest oleh client saja sehingga
memory lebih efisien. Nodejs juga memiliki sifat asynchronously programming.

HTTP
Nodejs memiliki built-in module yang dinamakan http, yang memungkinkan Nodejs untuk
melakukan transfer data menggunakan Hyper Text Transfer Protocol (HTTP). Untuk memasukkan
module http, gunakan sintaks require().

var http = require('http');

Module http juga dapat digunakan untuk membuat HTTP server dengan memberikan port listener
dan akan memberikan response ke client saat url server diakses. Untuk membuat HTTP server,
gunakan method createServer() pada module http.
Suminar Ariwibowo Information Systems Program Web Apps Development

Berikut adalah contoh penggunaan module http pada Nodejs untuk membuat HTTP server dengan
port 8080. Buatlah file index.js di folder server.

Pada file index.js, buatlah kode sebagai berikut :

var http = require('http');

//create a server object:


http.createServer(function (req, res) {
res.write('Hello World!'); //write a response to the client
res.end(); //end the response
}).listen(8080, function(){
console.log('Server is running on port 8080')
}); //the server object listens on port 8080

Untuk menjalankan kode diatas, jalankan perintah node index.js dari command line anda dan
pastikan path command berada pada folder di mana file index.js berada.

Memanggil url di browser :


Suminar Ariwibowo Information Systems Program Web Apps Development

RESTFUL

Representational State Transfer (REST) merupakan pendekatan untuk membangun web service
dengan memanfaatkan standar HTTP. RESTful menggunakan kata erja (metoda) request HTTP (GET,
POST, PUT, DELETE, dan lain-lain) untuk melakukan operasi terhadap resource web yang
diidentifikasikan dengan Uniform Resource Identifier (URI). Setiap request pada web service RESTful
bersifat stateless, tidak ada keterkaitan antara operasi yang sebelumnya dengan operasi yang akan
dilaksanakan.

EXPRESS

Express adalah framework aplikasi web untuk Nodejs yang dapat digunakan untuk mengatur
penanganan request dengan HTTP verbs berbeda di URL path (routes) berbeda pula. Selain handler
request, Express juga akan mengembalikan response ke sisi client. Express sangat membantu saat
anda akan membangun RESTful untuk aplikasi web anda.

Untuk menggunakan module Express pada Nodejs, install lah library express di folder project Nodejs
anda dengan menjalankan perintah berikut :

Setelah express sudah terinstall di project Nodejs anda, include lah express dengan menggunakan
sintaks require().

var http = require('http');


var express = require('express');
var app = express();

//response for url : http://localhost:8080/


app.get('/', function(req, res){
res.end('Hello World')
})

//create a server object & include express object :


http.createServer(app).listen(8080, function(){
console.log('Server is running on port 8080')
}); //the server object listens on port 8080

ROUTING

Salah satu ciri utama RESTful adalah memanfaatkan URI sebagai identitas object yang akan diakses
atau dimanipulasi. URI pada aplikasi web tradisional biasanya di-mapping pada file script yang akan
dieksekusi oleh web server. Untuk menghasilkan URI yang sesuai dengan kebutuhan RESTful
dibutuhkan tool untuk melakukan routing terhadap URI. Tool yang dapat digunakan untuk mengatur
routing URI ini adalah Express.
Suminar Ariwibowo Information Systems Program Web Apps Development

express().get(url, function(request, response){


statement response
})

Function handler pada express terdapat dua argument yaitu request, dan response. Argumen request
digunakan untuk menampung object request dari sisi client seperti data form, parameter, header,
dan lain-lain, sedangkan argument response digunakan untuk memberikan object response ke sisi
client.

Contoh operasi web service RESTful :

 Resource : URI koleksi : http://localhost:8080/angka


Operasi :
GET : mengakses kumpulan data angka
POST : menambahkan data angka baru
DELETE : menghapus seluruh data angka

Berikut adalah kode dari contoh skenario operasi diatas :

var http = require('http');


var express = require('express');
var app = express();

var angka = [1,2,3,4,5];

//set uri dengan method GET : http://localhost:8080/angka


app.get('/angka', function(req, res){
res.json(angka); //response data angka sebagai JSON
})

//set uri dengan method POST : http://localhost:8080/angka


app.post('/angka', function(req, res){
angka.push(angka.length + 1)
res.status(200)
res.end()
})

//set uri dengan method DELETE : http://localhost:8080/angka


app.delete('/angka', function(req, res){
angka = []
res.status(200)
res.end()
})

http.createServer(app).listen(8080, function(){
console.log('Server is running on port 8080')
});
Suminar Ariwibowo Information Systems Program Web Apps Development

Untuk menguji RESTful yang sudah anda bangun, anda dapat menggunakan aplikasi Postman untuk
memastikan routing URI, request, dan response sudah berjalan dengan baik.

URI PARAMETER

Dengan Express anda juga dapat menentukan parameter pada routing URI dengan menggunakan
notasi : pada nama parameter di routing URI. Berikut contoh penggunaan parameter dengan nama
paramenter adalah index, dimana parameter ini digunakan untuk mendapatkan nilai dari data angka
berdasarkan nilai parameter index.

app.get('/angka/:index', function(req, res){


var index = req.params.index;
res.end(angka[index].toString())
})

BODY PARSER

Parse request body yang masuk dalam middleware sebelum masuk ke dalam handler, tersedia dalam
property req.body. Body parser sering digunakan untuk penanganan data yang dikirim oleh client
seperti data form, dan JSON.

Body Parser bukanlah module built-in di Nodejs, artinya untuk menggunakan Body Parser pada project
Nodejs, harus terlebih dahulu diinstall dengan menjalankan perintah :
Suminar Ariwibowo Information Systems Program Web Apps Development

Include module body-parser dengan sintaks requires(), seperti terlihat pada kode berikut :

var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: false }));


app.use(bodyParser.json());

Modifikasi URI POST : http://localhost:8080/angka, dengan menambahkan data baru ke array angka
dari data request body.

//set uri dengan method POST : http://localhost:8080/angka


app.post('/angka', function(req, res){
var data = req.body.data;
angka.push(data)
res.status(200)
res.end()
})

MYSQL

MySql adalah sebuah perangkat lunak system management basis data SQL atau DBMS yang
multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySql AB membuat MySql
tersedia sebagai perangkat lunak gratis di bawah lisensi GNU General Public License (GPL), tetapi
mereka juga menjual di bawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak
cocok dengan penggunaan GPL.

KEISTIMEWAAN MYSQL
MySql memilki beberapa keistimewaan, antara lain :

1. Portabilitas. Mysql dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux,
Mac OS X Server, Solaris, dan lain-lain
2. Open source. Mysql didistribusikan sebagai perangkat lunak open source, sehingga dapat
digunakan secara gratis
3. Multi-user. Mysql dapat digunakan oleh beberapa pengguna dalam waktu yang berasamaan tanpa
mengalami masalah atau konflik
4. Performance tuning. Mysql memiliki kecepatan yang menakjubkan dalam menangani query
sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu
5. Ragam tipe data. Mysql memiliki ragam tipe data yang sangat kaya, seperti signed/unsigned
integer, float, double, char, text, date, timestamp, dan lain-lain
6. Perintah dan fungsi. Mysql memiliki operator dan fungsi secara penuh yang mendukung perintah
select dan where dalam perintah (query)
7. Keamanan. Mysql memiliki beberapa lapisan keamanan seperti level subnet mask, nama host,
dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi
8. Skalabilitas dan pembatasan. Mysql mampu menangani basis data dalam skala besar, dengan
jumlah rekaman (records) lebih dari 50 juta dan 60 juta table serta 5 miliar baris. Selain itu,
batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya
9. Konektivitas. Mysql dapat melakukan koneksi dengan client menggunakan protocol TCP/IP, Unix
socket (UNIX, atau Named Pipes (NT)
Suminar Ariwibowo Information Systems Program Web Apps Development

10. Struktur table. Mysql memiliki struktur table yang lebih fleksibel dalam menangani ALTER
TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle

KONEKSI MYSQL DENGAN NODEJS


Nodejs dapat bekerja dengan database Mysql dengan menggunakan driver atau module mysql. Karena
mysql bukan termasuk built-in module di Nodejs, maka anda perlu menginstall driver atau module
mysql di project Nodejs anda, dengan menjalankan perintah berikut :

Include mysql ke dalam file .js anda, dengan menggunakan sintaks require(), seperti contoh berikut
yang akan membuat koneksi ke salah satu database mysql (nama database : db_react_training).

var mysql = require('mysql')

var conn = mysql.createConnection({


host : "localhost", //nama host database mysql
user : "root", //user mysql
password : "", //password mysql
database : "db_react_training" //database mysql
})

conn.connect(function(err){
if(err)
console.log("Problem with MySQL " + err);
else
console.log("Connected with Database");
})

Berikut adalah contoh untuk menjalankan query mysql di Nodejs dengan module mysql. Terdapat
table tbl_mahasiswa di database db_react_training, dan URI GET http://localhost:8080/mahasiswa
akan digunakan untuk mendapatkan semua data dari table tbl_mahasiswa.

Gambar 1 | Isi Table tbl_mahasiswa


Suminar Ariwibowo Information Systems Program Web Apps Development

Berikut adalah contoh untuk mendapatkan data diatas dengan URI GET :
http://localhost:8080/mahasiswa :

app.get('/mahasiswa', function(req, res){


conn.query("select * from tbl_mahasiswa", function(err, rows){
res.json(rows) //return result data query ke response client
})
})

Object conn adalah object koneksi mysql yang telah berhasil dibuat, dan dapat digunakan untuk
menjalankan perintah query seperti select data dari table dengan menggunakan method query. Di
method query terdapat dua argument, argument pertama adalah string query, sedangkan pada
argument kedua adalah function handler untuk mendapatkan hasil dari perintah query yang
dijalankan.

Pada function handler query, terdapat dua argument yaitu err (error) untuk mendapatkan nilai error
jika terjadi kesalahan pada perintah query yang dijalankan, dan rows untuk mendapatkan hasil dari
query seperti baris data atau object result query.

Perlu diketahui, mysql query dari Nodejs bersifat asynchronous dan hasil dari query select berupa
data array, seperti yang terlihat pada gambar hasil Postman diatas.
Suminar Ariwibowo Information Systems Program Web Apps Development

KESIMPULAN

Dalam membangun aplikasi web yang melibatkan data dinamis seperti database, dan file maka kita
perlu menggunakan web server untuk menyajikan data-data yang dibutuhkan oleh sisi client (front-
end). Web server juga dapat digunakan untuk mengolah data database, dan file. Karena Reactjs
adalah framework yang hanya berfokus pada sisi client (front-end) sehingga untuk membangun web
server (back-end) perlu menggunakan framework lain, dalam kasus ini kita menggunakan Nodejs, &
Express. Selain karena sama-sama menggunakan Javascript, Nodejs juga terbukti mampu membuat
memory server menjadi lebih efisien. Nantinya Nodejs & Express akan digunakan untuk membangun
RESTful yang bukan hanya dapat digunakan oleh web front-end, tetapi bisa juga digunakan oleh
platform lain seperti aplikasi mobile (Android, & iOS). Nodejs juga dapat digunakan untuk mengelola
berbagai database seperti Mysql, PostgreSQL, SQL Server, dan bahkan database non-sql seperti
Mongodb dan Firebase.
Suminar Ariwibowo Information Systems Program Web Apps Development

Anda mungkin juga menyukai