Home > Messaging, REST, SOA > REST == Istirahat ??

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

Advertisement
Categories: Messaging, REST, SOA Tags: ,
  1. June 24, 2009 at 7:54 am

    parah postingannya wel. Orang awam bakal berak darah dulu klo baca postingan mau mu ini. wakakakakaka

  2. June 24, 2009 at 8:00 am

    simpel kali ya bro.. šŸ˜€ Ganteng dia..

  3. Rikky Hermanto Hasibuan
    October 21, 2010 at 5:34 pm

    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…

    • weltam
      October 23, 2010 at 12:30 am

      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.

    • weltam
      October 23, 2010 at 12:32 am

      pake REST juga returnya bisa macam2 kok ces.. di ASP .NET MVC, WCF from .NET world bahkan lebih gampang buatnya.. haha..
      di ruby juga ..

  4. Rikky Hermanto Hasibuan
    October 21, 2010 at 5:41 pm

    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… šŸ˜›

    • weltam
      October 23, 2010 at 12:35 am

      REST itu all about Resource. Jadi gimana kita memodelkan resource.

  5. Rikky Hermanto Hasibuan
    October 21, 2010 at 5:45 pm

    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… šŸ˜›

    • weltam
      October 23, 2010 at 12:38 am

      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″, ….}

  6. weltam
    October 23, 2010 at 12:41 am
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: