[Yii Framework] Make a Client Rest Application (GET)

Pada website yii framework telah ada sebuah wiki yang membahasa cara membuat rest service dengan Yii Framework. Pada wiki itu juga di sertakan aplikasi contoh yang telah menerapkan rest service pada aplikasinya dan dapat kita download langsung pada link yang ada pada wiki tersebut. Hanya saja walaupun telah ada aplikasi contoh yang menerapkan rest service, banyak orang mengalami kesulitan untuk membuat aplikasi client yang mengakses rest service nya dengan Yii Framework. Maka dari itu kali ini saya akan memaparkan cara untuk membuat client rest service pada Yii Framework. Tapi perlu diketahui posting kali ini hanya membahas pengaksesan data pada “GET” saja (biar ga kepanjangan).. Berikut step-step nya :

Sebelum lebih jauh, saya asumsikan anda sudah paham apa itu rest service karena saya tidak akan menjelaskan lagi tentang rest.

1. Agar seragam silahkan terlebih dahulu  mendownload aplikasi yang telah ada pada tutor Yii Fraemework di http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/. Jika sudah di download letakkan pada server local anda dan pastika aplikasi nya bisa dijalankan.

2. Craete new application in Yii Framework

3. Buatlah sebuah fungsi untuk mengakses rest service :

// terdapat 3 buah parameter, data sebagai parameter data, url untuk mengetahui akan mengakses url mana service nya, method untuk mengetahui apa metode yang digunkana (post, get, put)
public $password="password service nya";
public $usernama="username service nya";
public function submit_cURL ($data,$url,$method) 
 {
   $data[]="X_ASCCPE_PASSWORD : $this->password"; // data untuk autentikasi password
   $data[]="X_ASCCPE_USERNAME : $this->username"; // data untuk autentikasi username
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_TIMEOUT, 1000);
   if($method=='POST')
      curl_setopt($ch, CURLOPT_POST, 1);
   else if($method=='PUT')
      curl_setopt($ch, CURLOPT_PUT, 1);
   curl_setopt($ch, CURLOPT_HTTPHEADER, $data);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
   $result = curl_exec($ch);
   curl_close ($ch);

   return $result;
 }

4. Code sebelumnya adalah fungsi untuk memanggil rest service, untuk menampilkan rest service nya buatlah pada suatu action. Service  pertama yang akan kita akan panggil rest service nya adalah action list dimana akan menampilkan semua data pada service. Pada aplikasi yang telah kita donlod sebelumnya kita bisa melihat di dalamnya terdapat sebuah folder “Rest Client Request”. Kita dapat melihat request pada “list” adalah seperti berikut :

{"requestUrl":"http://localhost/~diggindata/yii-blog-rest/index.php/api/posts","requestMethod":"GET","requestBody":"","headers":["X_ASCCPE_PASSWORD","demo","X_ASCCPE_USERNAME","demo"]}

Agar dapat mengakses nya, buatlah action seperti berikut pada controller anda :

public function actionList()
 {
   $data[]='';
   $result=$this->submit_cURL($data,"http://localhost/yii-blog-rest/index.php/api/posts","GET"); // memanggil fungsi yang menampilkan rest service dengan memasukkan beberapa parameter
   print_r($result);
 }

Jika sudah silahkan jalankan maka akan menghasilkan hasil berupa data-data seperti berikut :

[{"id":"1","title":"Welcome!","content":"This blog system is developed using Yii. It is meant to demonstrate how to use Yii to build a complete real-world application. Complete source code may be found in the Yii releases.\n\nFeel free to try this system by writing new posts and leaving comments.","tags":"yii, blog","status":"2","create_time":"1230952187","update_time":"1230952187","author_id":"1"},{"id":"2","title":"A Test Post","content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","tags":"test","status":"2","create_time":"1230952187","update_time":"1230952187","author_id":"1"},{"id":"10","title":"XXX","content":"YYY","tags":"","status":"1","create_time":"1302873156","update_time":"1302873156","author_id":"1"},{"id":"12","title":"XXX","content":"YYY","tags":"","status":"1","create_time":"1302873243","update_time":"1302873243","author_id":"1"},{"id":"13","title":"XXX","content":"YYY","tags":"","status":"1","create_time":"1302873251","update_time":"1302873251","author_id":"1"},{"id":"14","title":"XXX 222","content":"Bla","tags":"","status":"1","create_time":"1302894646","update_time":"1302894646","author_id":"1"}]

Setelah itu kita juga akan coba mengakses view, dimana bisa kita lihat request dari view adalah seperti berikut :

{"requestUrl":"http://localhost/~diggindata/yii-blog-rest/index.php/api/posts/1","requestMethod":"GET","requestBody":"","headers":["X_ASCCPE_PASSWORD","demo","X_ASCCPE_USERNAME","demo"]}

Anda bisa lihat beda nya pada view memiliki parameter id yang ingin di view. Agar dapat menampilkannya, silahkan buat sebuah action kembali dengan code seperti berikut :

public function actionView($id)
 {
   $data[]='';
   $result=Yii::app()->srest->submit_cURL($data,"http://localhost/yii-blog-rest/index.php/api/posts/$id","GET");
   print_r($result);
 }

Kemudian cobalah akses action tersebut, maka akan tampil data seperti berikut (misal untuk id=2):

{"id":"2","title":"A Test Post","content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","tags":"test","status":"2","create_time":"1230952187","update_time":"1230952187","author_id":"1"}

Selesai… Selamat mencoba..
semoga membantu…

5 Responses to [Yii Framework] Make a Client Rest Application (GET)

  1. Terimakasih buat tutorialnya mas. Saya udah nyoba jalanin seperti tutorial yang diatas. Tapi pas saya jalanin programnya, dapat pesan error 401 ‘Unauthorized’. Saya udah ganti password sama username nya jadi “demo” “demo”. Tapi tetap gak bisa mas, mohon bantuannya Mas.

  2. Wahyu Ws says:

    Mas itu kan Downlod cUrl, trus di panduannya di letakan di server lokal anda, maksudnya server lokal yg mana ya? htdocs kah ?

  3. fauzi says:

    permission yg ada di mana mas?

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 )

Google+ photo

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

Connecting to %s

%d bloggers like this: