REST == Istirahat ??
REST sangat amat simple. Coba bandingkan ketika kita ingin meminta phone book dari seorang user. Dengan webservice+soap kita akan mengirimkan request dengan
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body pb="http://www.acme.com/phonebook"> <pb:GetUserDetails> <pb:UserID>12345</pb:UserID> </pb:GetUserDetails> </soap:Body> </soap:Envelope>
Dikirimkan dengan HTTP POST ke server. Nah SOAP tersebut memiliki struktur. Data response akan dikirimkan kembali dalam bentuk XML dan isinya ada didalam envelope atau payload. Jadi selain data yg kita ingingkan ada lagi pembungkusnya atau embel2nya.
Nah dengan rest bagaimana caranya ??
Simple sekali cukup dengan URL Seperti ini
http://www.acme.com/phonebook/UserDetails/12345
Ga ada peraturan seperti di soap ada body, header etc. Yg penting kita tw lokasinya. Yah karena kita ingin ngambil data maka HTTP method yg dipake adalah GET. Ntar server akan mengembalika datanya dalam bentuk raw result data. Ga ada embel2 amplop seperti di SOAP. Klo kita make SOAP kita harus parsing lagi. Emang ada sih librarynya.
Klo kita make REST kita bias akses dan test dari browser aja.
Nah sekarang kita lihat ciri rest. Klo di SOAP kita mengirimkan message GetUserDetails. Nah bentuknya adalah kata kerja. Klo dengan REST UserDetails. Nah arahnya adalah Noun. Resource adalah Noun. Pada REST fokusnya adalah pada resourcenya. Jadi apa yg ingin kita lakukan terhadap resource tersebut ditentukan berdasarkan HTTP method apa yg kita gunakan. Apakah GET, POST, PUT, DELETE. Dll
Nah coba klo misalya kita bandingkan di dunia ini SOAP vs REST pada contoh kehidupan. Mmm ambil contohnya adalah pengirman surat. Pengiriman surat biasa adalah dengan amplop. Nah itu dengan SOAP. Klo REST itu ibarat mengirim kartu pos. Lebih simple dan ga rumit. Hemat kertas lagi. Ga ush beli amplop. Heheh
parah postingannya wel. Orang awam bakal berak darah dulu klo baca postingan mau mu ini. wakakakakaka
simpel kali ya bro.. š Ganteng dia..
wait..wait..wait…
kok mirip dengan Friendly URL nya CakePHP, ya!?
http://e-Reading.com/admin/books/add
=> means
User Previledges: ADMIN
Controller: books (retrieved from BOOK model, sama dengan Resource di istilah mu men…)
Services: add (add book)
HTTP Method: POST
http://e-Reading.com/categories/rss/1
=> means
User Previledges: PUBLIC
Controller: categories (retrieved from CATEGORY model, sama dengan Resource di istilah mu men…)
Services: rss (return RSS)
HTTP Method: GET
http://e-Reading.com/admin/books/view_detail/87
=> means
User Previledges: ADMIN
Controller: books(retrieved from BOOK model, sama dengan Resource di istilah mu men…)
Services: view_detail
HTTP Method: GET
Hhhmmm… plenty easy kan bro… š
Kalo REST returnnya apa bro?
kalo Cake bisa macam2, RSS, Jason, pure text.. dsb…
tapi jangan terjebak dalam pikiran bahwa rest itu CRUD teknik doang. salah satu yg perlu diperhatikan adalah REST itu dibangun di atas spesifikasi HTTP. Nah jadi kita harus tw apa2 sifat2 protocol http supaya bisa getting the most dari REST. Jadi rest itu gak hanya friendly urlnya doang.
Dengan REST itu kita bisa memanfaatkan the whole web sebagai infrastructure dari aplikasi kita klo kita hostingnya di internet. Salah satu hal yg mencolok itu adalah penggunaan Cache. Jadi server kita gak terus2an kena hit sama request user.
pake REST juga returnya bisa macam2 kok ces.. di ASP .NET MVC, WCF from .NET world bahkan lebih gampang buatnya.. haha..
di ruby juga ..
nambahin :P,
http://e-Reading.com/admin/books/view_detail/87
87 disini maksudnya params service mu…
sama kayak 12345-nya
http://www.acme.com/phonebook/UserDetails/12345 pada contoh…
Jadi kalo aku convert link REST itu ke fw CakePHP
jadinya Class Phonebook, service UserDetails(), params 12345…
Hahahahahaha… menarik bro… š
REST itu all about Resource. Jadi gimana kita memodelkan resource.
Nambahin lagi, Hahahahahaha…..
semua yg diatas tuh aku pandang dari penerapan sisi Friendly URL nya ya..
Setelah aku cek, I found this:
“While other solutions exist, REST is a great way to provide easy access to the logic you’ve created in your application. It’s simple, usually XML-based (we’re talking simple XML, nothing like a SOAP envelope), and depends on HTTP headers for direction. Exposing an API via REST in CakePHP is simple…”
I think I’m in love…
balas dulu bro…
Hahahahha… š
salah satu yg penting lagi mengenai REST itu adalah hypermedia. Misalnya kita request sesuatu dengan uri tertentu. Selain kita dapat datanya kita juga dapat operasi2 lain yg bisa dilakukan terhadap data tersebut. jadi misalnya kita kembalikan data book nanti kita disitu kembalikan juga operasi2 apa yg bisa dilakukan terhadap book itu
{“data_buku”:”data_buku”}
n
{“beli_buku”:”http://http://e-Reading.com/admin/books/beli/87″, ….}
{“order_buku”:”http://http://e-Reading.com/admin/books/order/87″, ….}
ini ada artikel bagus
http://martinfowler.com/articles/richardsonMaturityModel.html