Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh...

22
Pembuatan RESTful Web Service “Hello World” dengan PHP & Java Husni [email protected]

Transcript of Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh...

Page 1: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Pembuatan RESTful Web Service “Hello World” dengan PHP &

Java

Husni

[email protected]

Page 2: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Membangun REST API dengan PHPSekedar Menyapa ☺

Page 3: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Membuat Direktori: C:\XAMPP\htdocs\API

• Nanti, semua file diletakkan di sini: halo.php (provider API), haloclient.php (customer API, sekaligus aplikasi web) dan .htaccess (URL rewriter)

3

Page 4: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Halo.php: Aplikasi Web Biasa, Belum API

• Jika id bernilai 5 tampilkan... Jika tidak... Dan jika tidak ada id-nya

4

Page 5: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Mengakses halo.php

5

Page 6: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Ingat Arsitektur Web Service

• Sumber data disediakan oleh API Provider

• Pengguna API adalah Aplikasi API Customer, bukan pengguna akhir (yang menggunaklan Web browser atau Mobile Apps).

• Aplikasi web biasanya disediakan oleh API Cusromer.

6

Database

API Provider

HTTP Server

API Customer

HTTP Server

User: Web Browser

Halo.php.htaccess

haloclient.php

Page 7: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Halo.php diakses oleh haloclient.php

• Pengguna (via Web Browser atau mobile apps.) tidak mengakses API Provider, tetapi mengakses aplikasi web: haloclient.php

• Haloclient.php juga bertindak sebagai API customer yang mengakses halo.php

7

Page 8: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

User Mengakses haloclient.php

• http://localhost/api/haloclient.php

8

Sudah Sesuai Kaidah Web Service!

Tetapi Belum RESTful

Page 9: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Jadikan RESTful Web Service☺

• Belum RESTful:

http://localhost/api/halo.php?id=5

• Agar RESTful, URL Request Harus diubah menjadi, misalnya:

http://localhost/api/hello/5

• Manfaatkan URL Rewriter di sisi Provider: .htaccess

9

Page 10: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Contoh Akses dari Pengguna

10

Page 11: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Membangun REST API dengan JavaHello World!

Page 12: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Apa yang diperlukan?

• Java Virtual Machine (JDK) 1.8 atau dikenal dengan Java 8

• IDE: Eclipse, Netbeans edisi Enterprise (EE)

• Framework: Jersey, berisi banyak file .jar

• Server web atau Container: Tomcat 8 atau 8.5

• Web Browser

• Maven? Tidak harus!

12

Page 13: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Membuat REST API

• Dibuat di sisi Provider

• Langkah-langkahnya:1. Membuat Proyek Web Dinamis

2. Membuat Paket (Package)

3. Menyalin file .jar dari bundle Jersey

4. Mengkonfigurasi web.xml

5. Menulis kode program API

6. Menjalankan API di Container

13

Akan diperlihatkan langkah-langkah

pembuatan RESTful Web Service Simpel di Eclipse

Yang diperlukan:• JDK 1.8 atau terkenal dengan Java 8• EclipseEE : IDE pengembangan aplikasi Enterprise• Pustaka Jersey (download bundle .zip)• Web Server atau Container Tomcat 8 atau 8.5

Page 14: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

1. Membuat Proyek Web DinamisFile > New > Dynamic Web Project

14

Page 15: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

2. Membuat Paket: id.ac.trunojoyo.husniKlik Kanan Nama Proyek > New > Package

15

Struktur direktori setelah pembuatan

Package

Page 16: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

16

3. Menyalin file .jar dari bundle Jersey

• Ekstrak bundle .zip dari pustaka Jersey

• Salin semua file berekstensi .jar ke dalam folder WebContent > META-INF > Lib

• Klik kanan nama Proyek > Build Path > Configure Build Path...

• Klik Add JARs...

• Lanjutkan.

Page 17: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

4. Konfigurasi web.xml<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

<display-name>RESTfulHelloWorld</display-name>

<servlet>

<servlet-name>REST Web Services Hello World</servlet-name>

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

<init-param>

<param-name>jersey.config.server.provider.packages</param-name>

<param-value>id.ac.trunojoyo.husni</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>REST Web Services Hello World</servlet-name>

<url-pattern>/rest/*</url-pattern>

</servlet-mapping>

</web-app> 17

Page 18: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

5. Menulis Kode REST API: Kelas HelloWorldKlik Kanan Nama Proyek > New > Classpackage id.ac.trunojoyo.husni;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

@Path("/helloworld") //Atur path ke URL dasar + /helloworld

public class HelloWorld {

// Metode ini dipanggil jika requestnya TEXT_PLAIN

@GET

@Produces(MediaType.TEXT_PLAIN)

public String sayPlainTextHello() {

return "Hello World REST Web Services !";

}18

Page 19: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

5. Menulis Kode REST API: Kelas HelloWorldKlik Kanan Nama Proyek > New > Class

// Metode ini dipanggil jika requestnya XML

@GET

@Produces(MediaType.TEXT_XML)

public String sayXMLHello() {

return "<?xml version=\"1.0\"?>" + "<hello> Hello World REST Web Services !</hello>";

}

// Metode ini dipanggil jika requestnya HTML

@GET

@Produces(MediaType.TEXT_HTML)

public String sayHtmlHello() {

return "<html> " + "<title>" + "Hello World REST Web Services !" + "</title>" +

"<body><h1>" + "Hello World REST Web Services !" + "</body></h1>" + "</html> ";

}

} //akhir kelas

19

Page 20: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

6. Menjalankan REST APIKerjasama dengan Container Tomcat 8.5

• Klik kanan nama proyek > Run As > Run On Server

20

Klik Next

Klik Finish

Page 21: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Hasil Pengujian:

21

Langsung di Eclipse

Via Google Chrome!

String dalam format plain text

String dalam format HTML

Page 22: Pembuatan RESTful Web Service “Hello World” dengan PHP & … · Halo.php diakses oleh haloclient.php •Pengguna (via Web Browser atau mobile apps.) tidak mengakses API ... •Belum

Mengakses REST API Menggunakan Jersey

• Cukup mudah....

• Coba praktikkan secara mandiri!

• Coba juga gunakan kelas URL dari Java untuk mengakses Web Service RESTful tersebut

22