Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

28
Tutorial pembuatan Rest Service Web SS (Fungsi Login) menggunakan Platform Java 1. Apa itu REST REST merupakan singkatana dari Representational State Transfer. Rest service adalah sebuah aplikasi SOA yang mempunyai karakteristik stateless, client-server, cacheable communications protocol. Protokol yang digunakan dalam komunikasi data Rest adalah menggunakan protocol HTTP. REST merupakan pola arsitektur yang didesain untuk kebutuhan aplikasi jaringan. Ide utamanya adalah sebagai alternative pilihan selain menggunakan CORBA, RPC atau SOAP yang dinilai sangat kompleks dan berat. Aplikasi berbasis REST menggunakan HTTP request untuk mengirimkan data (create / update), membaca data (misalkan membuat kueri) dan menghapus data (Delete). REST menggunakan parameter HTTP status untuk merepresentasikan operasinya (CRUD). Pada sisi Bahasa pemrograman, REST tidak terikat atau dapat dikatakan REST bukan sebuah standar dari Bahasa pemrograman

description

Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Transcript of Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Page 1: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Tutorial pembuatan Rest Service Web SS (Fungsi Login) menggunakan Platform Java

1. Apa itu REST

REST merupakan singkatana dari Representational State Transfer. Rest service adalah sebuah aplikasi SOA yang mempunyai karakteristik stateless, client-server, cacheable communications protocol. Protokol yang digunakan dalam komunikasi data Rest adalah menggunakan protocol HTTP.

REST merupakan pola arsitektur yang didesain untuk kebutuhan aplikasi jaringan. Ide utamanya adalah sebagai alternative pilihan selain menggunakan CORBA, RPC atau SOAP yang dinilai sangat kompleks dan berat.

Aplikasi berbasis REST menggunakan HTTP request untuk mengirimkan data (create / update), membaca data (misalkan membuat kueri) dan menghapus data (Delete). REST menggunakan parameter HTTP status untuk merepresentasikan operasinya (CRUD).

Pada sisi Bahasa pemrograman, REST tidak terikat atau dapat dikatakan REST bukan sebuah standar dari Bahasa pemrograman apapun. Kita bisa membuat aplikasi berbasis REST baik dari pemrograman Ruby, Java, C, PHP atau lainnya.

2. REST sebagai sebuah Web Service yang ringan

Page 2: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Seperti sudah diinformasikan sebelumnya, REST merupakan alternative lain dari web service dimana keunggulan dari REST adalah pemrosesan yang tidak komplek sehingga membuat REST menjadi lebih ringan disbanding Web Service atau RPC.

Selain itu juga, REST service mempunyai Karakteristik yang hamper sama dengan Web Services, diantaranya :

Platform-independent Language-independent (C# dapat berkomunikasi dengan Java, atau sebaliknya.), Standards-based (berjalan diatas protocol HTTP), dan Dapat digunakan pada jaringan yang mempunyai Firewalls.

Pada sisi keamanan, REST service sama seperti Web Service, tidak mempunyai fitur bawaan khususnya fitur keamanan. Enkripsi, Manajemen sesi (Session Management), QoS guarantee, dan lainnya. Pada REST service pola keamanan yang bisa digunakan adalah :

Untuk keamanan, username/password tokens biasanya digunakan. Untuk enkripsi, REST dapat digunakan pada protocol HTTPS (secure socket).

3. Membuat REST Service

Setelah kita membahas tentang REST service, arsitektur, karakteristik dan lain-lainnya, pada poin ini kita akan membahas tentang pembuatan REST service.

Ada berbagai framework pada setiap bahasa pemrograman yang bisa kita gunakan untuk membuat REST service. Framework-framework yang bisa kita gunakan untuk membuat REST Service khusus pada Bahasa Java adalah sebagai berikut :

JAX-RS Jersey RestEasy DropWizard

Pada pembahasan ini kita akan menggunakan Servlet dengan bantuan GSON (Google JSON) untuk membuat Rest Service, Gson akan kita gunakan untuk melakukan parsing dan deparsing dokumen JSON menjadi Java Object dan sebaliknya. Dasar pemikiran pemilihan servlet dibanding penggunaan framework yang tersedia yaitu :

1. Servlet relative lebih ringan 2. Servlet secara native adalah Rest Service.3. Tidak memerlukan library tambahan untuk membuat Servlet.

Page 3: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Fungsi yang akan kita buat sebagai REST service adalah fungsi Login. Arsitektur yang akan dibuat adalah sebagai berikut :

Controller Bagian ini adalah logic code yang berfungsi menerima request JSON dari klien. Request JSON selanjutnya akan diproses (parsing) kedalam Java Object oleh GSON (Google JSON).

ModelBagian ini adalah bagian yang melakukan fungsi kedalam database. Didalam Model, kita menggunakan JDBC (Java Database Connectivity) untuk melakukan proses CRUD.

Setelah arsitektur yang akan dibuat sudah tergambar, maka selanjutnya adalah teknis pembuatan REST Service. Tools yang diperlukan adalah : 1. JDK (Java Development Kit).2. IDE (Integrated Development Editor) Eclipse3. Glassfish Application Server.

Setelah semua tools ada, maka selanjutnya adalah pembuatan aplikasi :1. Jalankan aplikasi editor Eclipse.

Page 4: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

2. Masuk kedalam eclipse workbench3. Buat project dengan mengklik File > New > Other

Page 5: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Pada jendela other project, pilih dynamic Web Project

4. Pada isian project baru :a. Project name : isi dengan nama project yang akan dibuatb. Target Runtime : Pilih target aplikasi akan dideploy, karena kita menggunakan

Glassfish, maka kita memilih target runtime Glassfish.c. Dynamic Modul Version : 3.0 d. Configuration : Biarkan configuration default Glassfish, kecuali kita ingin

menggunakan konfigurasi kustom.

Page 6: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

5. Klik Finish.

Biarkan eclipse melakukan generate project dan strukturnya. Setelah selesai maka pada bagian Project Explorer akan muncul project yang dibuat.

Page 7: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Selanjutnya adalah membuat Java package. Java package Package adalah sarana/cara pengelompokkan dan pengorganisasian kelas-kelas dan interface yang sekelompok menjadi suatu unit tunggal dalam library. Package juga mempengaruhi mekanisme hak akses ke kelas-kelas di dalamnya.

6. Untuk membuat package, klik kanan pada folder src pada project lalu pilih new > package

7. Pada jendela isian package, isilah struktur package sesuai dengan fungsinya lalu tekan Finish.

Page 8: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

8. Setelah membuat package, maka selanjutnya adalah membuat java class pada package tersebut, class yang akan dibuat adalah class servlet. Klik kanan pada package yang sudah dibuat, lalu pilih new > servlet

9. Pada jendela konfigurasi servlet : a. Class Name : isi dengan nama class (contoh : LoginAPI).b. Description : Isi dengan deskripsi dari class yang dibuatc. Initialization Parameter : Biarkan kosong, kecuali kita ingin melakukan inisialisasi

parameter.d. URL Mappings : Pemetaan URL, alamat yang digunakan untuk mengakses servlet

yang dibuat. (biarkan default, kecuali kita ingin mengubah alamat).e. Constructor from superclass : Yesf. Inherited abstract methods : Yesg. doPost, doGet : ini adalah method HTTP state yang akan digunakan oleh servlet. Jika

kita ingin hanya menggunakan HTTP POST saja maka centang hanya doPost, biarkan yang lainnya tidak dicentang. Jika kita ingin menggunakan State POST dan GET maka centanglah doPost dan doGet.

Page 9: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

10. Setelah semua kita konfigurasi, langkah selanjutnya klik Finish. Eclipse akan melakukan pembuatan class servlet sesuai dengan konfigurasi yang kita set sebelumnya.

Setelah membuat class servlet, selanjutnya kita akan membuat Pojo class. Pojo class ini adalah kelas getter – setter yang digunakan sebagai class parsing data JSON. Untuk membuat Pojo Class :

1. Buat package baru dengan nama com.app.pojo (untuk cara membuat package sesuai dengan yang telah dibahas sebelumnya).

Page 10: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

2. Setelah package dibuat, pada package tersebut buat class baru dengan nama LoginRequest.java

Page 11: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

3. Setelah selesai, buka LoginRequest.java, lalu buat getter setter seperti berikut :

4. Save

Setelah selesai membuat Pojo class, maka sekarang kita akan membuat Pojo class yang berfungsi sebagai Response dari servlet (Rest Service). Prosesnya sama dengan cara membuat Pojo class LoginRequest, hanya kita beri nama LoginResponse. Setelah selesai membuat class LoginResponse, masuk kedalam class tersebut lalu ketik kode berikut :

public class LoginRequest implements Serializable{

/** * */private static final long serialVersionUID = 1L;

private String nip;

private String password;

public String getNip() {return nip;

}public void setNip(String nip) {

this.nip = nip;}public String getPassword() {

return password;}public void setPassword(String password) {

this.password = password;}

}

Page 12: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Save class LoginResponse yang sudah dibuat. Pada tahapan ini kita sudah bisa melakukan pemrosesan request dan mengembalikan response kepada requestor, tetapi karena Login API yang akan kita buat ini memerlukan validasi atau kueri kearah database, maka kita akan membuat class-class tersebut.

1. Interface class IModelClass selanjutnya yang akan kita buat adalah class interface yang akan kita beri nama IModel. Fungsi dari Interface class adalah memisahkan antara caller dan implementation (decouple). Untuk membuat interface class, langkah-langkah yang dilakukan :

Buat package baru, beri nama : com.app.iface

public class LoginResponse implements Serializable{

/** * */private static final long serialVersionUID = 1L;

private String retcode;private String retmessage;

public String getRetcode() {return retcode;

}

public void setRetcode(String retcode) {this.retcode = retcode;

}

public String getRetmessage() {return retmessage;

}

public void setRetmessage(String retmessage) {this.retmessage = retmessage;

}}

Page 13: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Pada package tersebut, buat class baru : Klik kanan pada package > New > Interface.

Pada jendela interface class, isi name : IModel

Klik Finish

Page 14: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Setelah selesai, masuk kedalam class interface yang kita buat lalu tuliskan fungsi-fungsi yang akan kita “registrasi”kan kedalam interface tersebut :

Save

2. Class Implementation IModel Bagian ini kita akan membuat class implementasi dari IModel. Pada class ini semua proses yang berkaitan dengan CRUD database kita masukan. Untuk membuat class implementation model, langkah-langkah yang dilakukan :

Buat package baru dengan nama : com.app.model Pada package yang sudah dibuat, buat java class dengan nama : Model.java Setelah selesai membuat, masuk kedalam class Model.Java lalu ketika kode

berikut :

public interface IModel {

public String doLogin(String nip, String password);

}

Page 15: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

public class DBModel implements IModel{

@Overridepublic String Login(String nip, String password) {

String JSONResult = new String();Gson gson = new Gson();int found = 0;

ResultSet rst = null;PreparedStatement preparedStmt = null;

try{

// convert password into MD5 hashpassword = getMD5Hex(password);

connect = getConnection(); String query = "SELECT COUNT(*) FROM prv_password WHERE C_NIP = ? AND V_PASSWORD = ?"; preparedStmt = (PreparedStatement)

connect.prepareStatement(query);

preparedStmt.setString(1, nip);preparedStmt.setString(2, password); rst = preparedStmt.executeQuery(); while(rst.next()){ found = rst.getInt("COUNT(*)");} if(found > 0){

String name = new String();String nip_employee = new String();ArrayList<String> result = new ArrayList<String>(); query = "SELECT cNip as nip, vName as name FROM employee WHERE cNip = ? AND vPassword = ?";

preparedStmt = (PreparedStatement) connect.prepareStatement(query);

preparedStmt.setString(1, nip);preparedStmt.setString(2, password);

rst = preparedStmt.executeQuery();

Page 16: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

while(rst.next()){name = rst.getString("name");nip_employee = rst.getString("nip");

}

result.add(name);result.add(nip_employee);

loginResponse.setRetcode("00");loginResponse.setRetmessage("user "+ nip +" exist");loginResponse.setResult(result);

}else{loginResponse.setRetcode("01");loginResponse.setRetmessage("user "+ nip +" not exist

or nip and password not match!");

}

}catch(Exception e){loginResponse.setRetcode("02");

loginResponse.setRetmessage("failed : error="+e.getMessage());

}finally{if (preparedStmt != null) {

try{preparedStmt.close();

}catch(Exception e){}

}if (connect != null) {

try{connect.close();

}catch(Exception e){}}

if (rst != null){try{

rst.close();}catch(Exception e){}

}}

JSONResult = gson.toJson(loginResponse);return JSONResult;

}

JSONResult = gson.toJson(loginResponse);return JSONResult;

}

Page 17: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Pada tahap ini semua kebutuhan pada Login API sudah kita buat, mulai dari class untuk menangkap request JSON, memparsing dari dokumen JSON kedalam POJO dan memproses kearah database lalu mengirimkan kembali hasil proses kedalam format JSON. Tahap akhir, kita akan menggunakan semua class yang kita buat kedalam class Servlet yang sudah dibuat sebelumnya.

Langkah – langkahnya :

Buka file LoginAPI.java (servlet class) yang sudah dibuat sebelumnya Pada Scope doPost(), masukan kode berikut :

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("application/json");PrintWriter out = response.getWriter();String result = new String();IModel LoginAPI = new DBModel();StringBuffer data = new StringBuffer();String line = new String();Gson gson = new Gson();

boolean failed = false;RequestResponse result_response = new RequestResponse();

try{BufferedReader reader = request.getReader();while((line = reader.readLine()) != null){

data.append(line);}

if(data.toString() == null || data.toString() == ""){

failed = true;result_response.setRetcode("05");result_response.setRetmessage("error post data empty");

}else{LoginRequest loginRequest = gson.fromJson(data.toString(),

LoginRequest.class);if(loginRequest.getNip() == "" || loginRequest.getNip() == null){

failed = true;result_response.setRetcode("03");result_response.setRetmessage("error parameter empty nip");

Page 18: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Setelah semua kode kita tulis pada setiap class, tahapan paling akhir adalah melakukan packaging project yang kita buat menjadi file berekstensi WAR (Web Archieve) sehingga bisa di deploy kedalam application server.

}else if(loginRequest.getPassword() == "" ||

loginRequest.getPassword() == null){

failed = true;result_response.setRetcode("03");

result_response.setRetmessage("error parameter empty password");

}else{

result = LoginAP

I.Login(loginRequest.getNip(), loginRequest.getPassword());

}}

}catch(Exception e){failed = true;result_response.setRetcode("04");result_response.setRetmessage("error post data empty");

}

if(failed){// print resultout.println(gson.toJson(result_response));

}else{// print resultout.println(result);

}}

Page 19: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Langkah-langkah yang dilakukan : Klik kanan pada project, lalu pilih Export > War File

Pada jendela export, isi Destination dengan path dimana file .war akan disimpan. Target Runtime sesuaikan dengan Application Server yang akan menjadi tempat untuk mendeploy project (aplikasi).

Page 20: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Klik Finish

4. Deploy REST Service kedalam application server (Glassfish)Pada bagian ini, kita akan membahas cara melakukan deploy project yang sudah kita buat pada poin sebelumnya kedalam application server. Application server yang akan kita gunakan pada pembahasan ini adalah Glassfish Open Source Edition. Jika Glassfish server belum dijalankan, maka jalankan terlebih dahulu Glassfish dengan mengetik perintah berikut pada command prompt (windows).

c:\[path_glassfish]\glassfish\bin\> asadmin start-domain (enter)

Jika tidak ada masalah, maka glassfish application server akan berjalan. Setelah itu masuk kedalam admin console pada alamat : http://localhost:4848/

Masukan username dan password yang sudah dikonfigurasi sebelumnya pada saat pembuatan domain. (contoh : username : admin, password : welcome1)

JIka username dan password valid maka selanjutnya akan masuk kedalam halaman dashboard atau admin console. Disebelah kiri tree-menu, pilih Application.

Page 21: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

Pada halaman Application, klik tombol Deploy.

Pada halaman Deploy, klik browse untuk memilih file War yang akan diupload / dideploy kedalam application server. Klik Open.

Jika tidak ada masalah pada saat pembuatan project, maka project sukses dideploy. Jika masih ada masalah, cek server.log untuk detail permasalahan yang timbul.

Page 22: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

5. Testing REST Service.Pada poin ini kita akan membahas tentang pengetesan aplikasi yang sudah kita buat dan deploy kedalam application server (glassfish).

Untuk melakukan pengetesan ada beberapa tool yang bisa kita gunakan diantaranya : SoapUI (desktop application)

Aplikasi ini adalah aplikasi terintegrasi yang bisa digunakan untuk mengetes Soap Web Service, Rest Service dan juga bisa digunakan sebagai performance test pada aplikasi berbasis SOA.

Rest Test Client (Web Plugin)Aplikasi ini adalah aplikasi yang secara spesifik digunakan untuk melakukan testing terhadap aplikasi berbasis SOA khususnya REST Service. Keunggulan aplikasi ini adalah aplikasi ini berbasis Web Browser sehingga tidak perlu menginstall.

Pada pembahasan ini kita akan menggunakan Rest test client, jika Rest test client belum ada, silahkan dicari dan diinstall pada area firefox plugin. Jika sudah ada jalankan Rest test client, tampilan Rest test client sebagai berikut :

Untuk melakukan testing, kita harus sesuaikan request yang dikirimkan kedalam REST Service yaitu nip dan password, dimana nip dan password bertipe String. Pada JSON, untuk nilai variable yang bertipe String harus diapit oleh double quote (“”).Format JSON request :

{

Page 23: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

“nip”:”N06081”, “password”:”1234”}

Jangan lupa, bahwa kita menggunakan method doPost pada class Servlet yang kita buat sebelumnya sehingga hanya state POST saja yang akan diterima. Set method pada RestClient menjadi POST, masukan URL atau endpoint REST Service setelah itu klik Send.

Hasil sukses yang diperoleh adalah sebagai berikut :

Sementara jika hasilnya error, sebagai berikut :

Page 24: Tutorial pembuatan REST Service pada Support System menggunakan Servlet dan GSON

== Selamat Mencoba, Happy Coding! ==