Web Services Menggunakan HTTP PUT

Sebelumnya kita telah belajar bagaimana menggunakan methods HTTP GET dan POST untuk mengakses sebuah resource di suatu service. Kali ini kita akan melanjutkan pelajaran selanjutnya yaitu memanfaatkan methods HTTP PUT di dalam web services. Jika anda belum paham dengan apa itu methods PUT, tulisan saya di Konsep HTTP Methods REST mungkin bisa memberikan sedikit pencerahan.

Mirip dengan contoh sebelumnya, tutorial kali ini adalah membuat sebuah web services  sederhana dengan skenario sebagai berikut:

Di sisi server terdapat sebuah file bernama resource.txt dimana file tersebut berisi data berupa XML. Dari sisi klien nantinya akan mengakses file resources.txt tersebut, membaca isinya kemudian membuat resources baru berupa file  bernama output_resources.txt yang berisi data dari resources.txt.

Perlu diingat bahwa hal ini dapat dilakukan dengan arsitektur REST, meskipun sebagian besar server tidak akan mengijinkan pembuatan resources atau file baru di dalam server karena alasan security.

Menggunakan HTTP PUT

Langsung saja, pertama mari kita buat script untuk mengakses resources.txt dari sisi klien, saya beri nama dengan curl_put.php

curl_put.php ini akan menghubungi service yang berada di server yaitu put_services.php untuk menerima dan mengolah request dari klien.

<?php
$url = 'http://localhost/sistem1/put_services.php';

$open_file = fopen('resources.txt', 'r');
$data = file_get_contents('resources.txt');

$init = curl_init();

curl_setopt($init, CURLOPT_URL, $url);
curl_setopt($init, CURLOPT_PUT, true);
curl_setopt($init, CURLOPT_INFILE, $open_file);
curl_setopt($init, CURLOPT_INFILESIZE, strlen($data));

curl_exec($init);
curl_close($init);

File resources.txt kita isi dengan data dummy, misalkan:

<nama>Another Dream</nama>

Service put_service.php.

<?php
$putdata = fopen("php://input", "r");

$fp = fopen("output_resources.txt", "a");

while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

fclose($fp);
fclose($putdata);
?>

Ketika anda menjalankan curl_put.php maka server secara otomatis, melalui put_services.php akan memberikan output berupa output_resources.txt yang berisi data dari resources.txt. Hasilnya, ketika anda mengecek isi dari file output_resources.txt maka file tersebut berisikan data yang sama seperti file resources.txt.

Selamat mencoba.

 

Leave a Comment