TIF82
REST Team dosen
Prodi Teknik Informatika, Fak. Teknologi Informasi Universitas Mercubuana Yogyakarta 2016
Pendahuluan • Hypertext Transfer Protocol (HTTP) merupakan eleman
penting sebuah web, yang biasa kita digunakan setiap saat.
• Tetapi sesungguhnya banyak yang tidak dikenal oleh para pengembang web tentang HTTP.
• Sebagian besar kemampuan HTTP sebenarnya belum
digunakan secara sepenuhnya, dan REST di inspirasi oleh HTTP dan merupakan cara terbaik bagaimana HTTP bekerja.
• Mempelajari REST harus mempelajari HTTP
Pengantar REST • REST = Representational State Transfer • REST adalah bentuk arsitektur software untuk sistem terdistribusi seperti WWW.
• Cara mudah dan sederhana untuk mengatur atau mengelola interaksi antara berbagai sistem independen.
• Menggunakan kemampuan/fitur HTTP sebenarnya yang lebih lengkap, tidak hanya GET.
• Tumbuh dan berkembang sejak 2005 dan menginspirasi banyak API seperti twitter.
• REST mengijinkan kita berinteraksi, sumber daya yang minimal dengan client.
• REST selalu dapat di implementasikan ketika disitu HTTP bisa berjalan.
http://www.adityarizki.net/web-service-soap-vs-rest-mana-yang-lebih-baik/
Apakah rest web service? • REST pada dasarnya setiap URL unik adalah representasi dari beberapa objek. Kita dapat memperoleh konten-konten objek tersebut menggunakan HTTP GET, untuk menghapusnya, kita dapat menggunakan POST, PUT, atau DELETE untuk memodifikasi objek (dalam praktiknya, kebanyakan service menggunakan POST untuk ini).
Seberapa populer rest? • Semua web service utma di internet sekarang menggunakan REST: Twitter, Yahoo, termasuk Flickr, del.icio.us, pubsub, bloglines, technorati, dan beberapa yang lain. eBay dan Amazon menggunakan baik REST maupun SOAP.
Bagaimana dengan soap? • SOAP digunakan pada aplikasi-aplikasi Enterprise untuk mengintegrasikan penggunaan yang lebih luas dan banyak aplikasi dan tren yang lain adalah mengintegrasikan dengan legacy system (sistem lama yg sudah ada sebelumnya). Dalam internet, Google konsisten dalam mengimplementasikan web service mereka menggunakan SOAP, kecuali Blogger yang menggunakan XML-RPC.
konsep “SOAP to wash and your REST when you tired”. Keuntungan utama web service REST yaitu: • lightweigt, tidak membutuhkan XML markup tambahan • hasilnya dapat dibaca dengan mudah oleh manusia (human readable result)
• mudah untuk dikembangkan, tidak membutuhkan toolkit • Aplikasi client atau server dengan dukungan HTTP dapat dengan mudah memanggil service tersebut dengan command HTTP GET.
kerugian • REST bukanlah solusi terbaik untuk setiap web service. Data yang butuh keamanan seharusnya tidak dikirimkan sebagai parameter dalam URI. Dan data dalam jumlah besar, seperti layanan pembelian, dapat menjadi rumit bahkan di luar batas URI
HTTP (1) • Merupakan protokol yang mengijinkan pengiriman dokumen keluar masuk melalui web.
• Protokol merupakan set aturan yang menentukan pesan mana yang
dapat dipertukarkan dan pesan mana yang cocok satu dengan yang lain. Contoh protokol lain adalah POP3 yang bisa digunakan untuk mengambil email ke hardisk kita.
• Didalam HTTP ada dua peran berbeda: Server dan Client. • Pada umumnya, Client selalu mengawali koneksi (request) dan Server akan menanggapi (response)
• HTTP berbasis text, sehingga pesan pada intinya adalah kumpulan bit dari text, meskipun konten (body) bisa berisi berbagai media lainnya.
HTTP (2) • Pesan HTTP terdiri dari Header dan Body. • Body bisa tanpa isi (kosong), atau berisi data yang ingin di transmisikan melalui jaringan, berdasar instruksi yang ada di header.
• Header berisi metadata, misalnya informasi encoding. • Dalam sebuah request, Header berisi HTTP methods yang sangat penting.
• Dalam REST, kita akan menemukan bahwa data header biasanya lebih penting daripada body.
Bagaimana HTTP Bekerja • Jika menggunakan Chrome Developer Tools (Ctrl+Shift+I) atau ekstensi Firefox Firebug, kita dapat memata-matai (menganalisa) detail HTTP request ketika kita mengakses URL.
cURL • Cara lain untuk familiar dengan HTTP adalah
menggunakan client seperti cURL yang tersedia hampir di semua platform sistem operasi.
• Download cURL : http://curl.haxx.se/ Setelah cURL terpasang, jalankan dan ketikkan misalnya
curl -v google.com
• Akan ditampilkan komunikasi HTTP, request diawali dengan tanda > dan respon di awali dengan <
• Tampilan akses HTTP dengan cURL :
URL (1) • URL = Uniform resource locator ( web address ) • URL merupakan metode bagaimana kita mengidentifikasi 'sesuatu' yang ingin kita akses/kerjakan.
• setiap URL mengidentifikasi sebuah resource (sumber daya).
Sebagai contoh URL yang mengelola client sebuah perusahaan • /clients • Akan mengidentifikasi semua client perusahaan • /clients/joko • akan mengidentifikasi client yang bernama joko, dengan menganggap bahwa hanya ada satu nama joko
URL (2) • Contoh diatas tidak menyertakan hostname URL, karena akan
menjadi tidak relevan dari titik awal bagaimana mengelola sebuah antarmuka. Meskipun begitu hostname penting untuk memastikan bahwa identifikasi sumberdaya (resource identifier) selalu unik didunia web.
• Dikatakan bahwa kita melakukan request untuk sebuah resource terhadap sebuah host.
• Host disertakan secara terpisah dari lokasi resource di Header ( resource diletakkan di kanan atas sebuah header HTTP).
• Contohnya sebagai berikut :
URL (3) • Contoh header sebuat HTTP request: GET /clients/joko HTTP/1.1 Host: example.com
• Sebuah Resources bisa dikatakan sebagai nouns
(kebendaan/kata benda). Sebagai perbandingan, contoh berikut bukan merupakan RESTful :
/clients/add
• karena resource ini menggunakan URL untuk
mendeskripsikan sebuah aksi (yaitu ‘add’). Ini dasar penting untuk membedakan sistem RESTful dan yang bukan.
URL (4) • Kesimpulannya, URL seharusnya setepat mungkin, semua
resource yang perlu di identifikasikan unik harus ada di dalam URL.
• Data yang mengidentifikasi resources di dalam request tidak
perlu disertakan, dengan begini URL bertindak sebagai mapping yang lengkap untuk menangani semua data.
• Jika seperti itu, bagaimana mendidentifikasi sebuah Aksi?
misalnya clent ingin mendapatkan data atau ingin memasukkan data?
• Disinilah HTTP verbs (kata kerja) berperan.
HTTP Verbs (1) • Setiap request selalu menyertakan HTTP verbs atau metode
(methods) di Header-nya. Inilah bagian atau baris pertama dalam sebuah header request • GET / HTTP/1.1 • artinya metode GET digunakan, untuk mengakses root URL • DELETE /clients/joko HTTP/1.1 • artinya metode DELETE digunakan (disini untuk menghapus client bernama joko).
• "HTTP Verbs menginformasikan ke server apa yang harus dilakukan dengan data yang diidentifikasikan oleh URL"
HTTP Verbs (2) • Sebuah Request dapat pula menyertakan data
tambahan di dalam body yang mungkin diperlukan untuk operasi, misalnya data yang akan di entry.
• HTTP verbs yang penting untuk diketahui adalah :
GET, POST, PUT dan DELETE. Metode lain semisal HEAD dan OPTIONS juga tersedia, tetapi jarang digunakan.
• Daftar HTTP Methods lebih lengkap di http://www.ietf.org/rfc/rfc2616.txt
HTTP GET • GET merupakan jenis HTTP request methods yang
paling sederhana. • Digunakan di setiap kita membuka link di web browser, yang menginstruksikan ke server untuk mendapatkan data yang diidentifikasikan di URL. • Data di server tidak seharusnya dan tidak boleh di modifikasi dengan metode GET. Sehingga GET request merupakan read-only. • Client bebas melakukan operasi terhadap data yang didapat, seperti menampilkan dengan format tertentu
HTTP PUT • Request PUT digunakan ketika ingin membuat atau
update resource yang diidentifikasi oleh URL. Contoh • PUT /clients/agus HTTP/1.1 • bisa di artikan untuk membuat client baru dengan nama agus di server.
• PUT dapat menyertakan data yang digunakan untuk mengupdate atau membuat data baru di sever.
• REST tidak menginformasikan kepada server didalam request bagaimana data harus dibuat.
HTTP DELETE • Request DELETE digunakan untuk operasi yang berkebalikan dengan PUT.
• Digunakan ketika ingin menghapus resource yang di identifikasi oleh URL di request, misalnya • DELETE /clients/bambang HTTP/1.1 • request ini akan menghapus data yang di identifikasi dengan /clients/bambang.
HTTP POST • Request POST digunakan untuk memproses data yang diserver biasanya harus diulang-ulang. Sebagai contoh : • POST /clients/ HTTP/1.1 • harusnya tidak membuat resource /clients/ di modifikasi, tetapi
resource yang URLnya diawali dengan /clients/. Misalnya menambah client baru dengan ID yang di generate oleh server
• Tetapi terkadang PUT dan POST digunakan secara
berkebalikan. Meskipun biasanya POST request digunakan untuk melakukan operasi di server yang tidak bisa dilayani dengan Create/Update/Delete. Sehingga kebanyakan mencukupkan diri dengan PUT.
KLASIFIKASI HTTP Methods • Safe dan Unsafe methods • Safe methods yang tidak memodifikasi resources, dan hanya GET yang masuk jenis ini. Selain GET bisa memodifikasi resources (unsafe methods)
• Idempotent methods • Metode ini mendapatkan hasil yang sama, meski request diulang bekali-kali. Mereka adalah GET, PUT dan DELETE. Sedangkan POST merupakan methods non idempotent