Membuat Script Penyingkat URL (URL Shortener) dengan API Google
January 12th, 2012 | by rosihanari |
Cetak Artikel
Barangkali Anda pernah menjumpai suatu URL yang panjangnya minta ampun yang sulit untuk mengingatnya, padahal URL tersebut berisi artikel atau referensi yang menarik menurut Anda. Kira-kira bisa tidak kita menyingkat URL tersebut sehingga tidak menjadi terlalu panjang sehingga mudah diingat? Tentu bisa dong, dengan URL Shortener yang memanfaatkan API Google hal ini menjadi sangat mudah. Bahkan Anda bisa membuat sendiri script untuk penyingkat URL ini dengan API Google tersebut. Dengan begitu, Anda bisa menempatkan script tersebut untuk dipakai sendiri atau ditaruh di website sehingga bisa dimanfaatkan oleh pengunjung web.
Dalam artikel ini, akan saya paparkan bagaimana cara membuat script atau function di PHP untuk menyingkat URL tersebut yang memanfaatkan API Google.
Sebenarnya Anda bisa membuat scriptnya sendiri setelah ANda mempelajari panduan tentang URL Shortener dari API Google. Namun kalau Anda masih bingung, nanti akan saya sajikan script yang sudah jadi dan contoh implementasi atau pemanfaatannya.
Pertama, kita buat function terlebih dahulu untuk menyingkat URL nya. Berikut ini adalah functionnya:
<?php
function singkatURL($url)
{
$curlHandle = curl_init();
// melakukan request ke server Google API
curl_setopt($curlHandle, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
curl_setopt($curlHandle, CURLOPT_HEADER, 0);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, 0);
// menentukan tipe konten hasil request yg berupa JSON
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
// parameter yang berisi URL yang akan disingkat
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, '{"longUrl":"'.$url.'"}');
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
// lakukan request dengan POST method
curl_setopt($curlHandle, CURLOPT_POST, 1);
// baca data hasil request yg berupa JSON
$content = curl_exec($curlHandle);
curl_close($curlHandle);
// ekstrak data JSON untuk mendapatkan hasil URL yg disingkat
$data = json_decode($content);
return $data->id;
}
?>
Function singkatURL() di atas digunakan untuk menyingkat URL dengan memanfaatkan Google API. Parameter dari function ini adalah URL yang mau disingkat. Function singkatURL() nantinya langsung membuat request ke URL nya Google di https://www.googleapis.com/urlshortener/v1/url melalui POST request via CURL. Data hasil dari request tersebut berupa JSON yang contohnya berbentuk seperti ini:
{
"kind": "urlshortener#url",
"id": "http://goo.gl/fbsS",
"longUrl": "http://www.google.com/"
}
dimana “id” menyatakan URL hasil singkatannya, dan “longUrl” adalah URL aslinya. Dengan perintah
$data = json_decode($content); return $data->id;
kita akan mendapatkan URL hasil singkatannya yg terdapat dalam “id”.
Nah… functionnya sudah jadi, selanjutnya kita lakukan test apakah function tersebut bisa berjalan. Misalkan kita akan menyingkat URL dari salah satu artikel yang ada di blog ini, yaitu “http://blog.rosihanari.net/cara-mengetahui-lama-eksekusi-execution-time-sebuah-script-php“. Cara menyingkat URL ini dengan function singkatURL() adalah sbb:
<?php
function singkatURL($url)
{
$curlHandle = curl_init();
// melakukan request ke server Google API
curl_setopt($curlHandle, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
curl_setopt($curlHandle, CURLOPT_HEADER, 0);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, 0);
// menentukan tipe konten hasil request yg berupa JSON
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
// parameter yang berisi URL yang akan disingkat
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, '{"longUrl":"'.$url.'"}');
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
// lakukan request dengan POST method
curl_setopt($curlHandle, CURLOPT_POST, 1);
// baca data hasil request yg berupa JSON
$content = curl_exec($curlHandle);
curl_close($curlHandle);
// ekstrak data JSON untuk mendapatkan hasil URL yg disingkat
$data = json_decode($content);
return $data->id;
}
echo singkatURL('http://blog.rosihanari.net/cara-mengetahui-lama-eksekusi-execution-time-sebuah-script-php');
?>
Jika script di atas dijalankan, maka akan muncul output URL hasil singkatannya adalah: http://goo.gl/To7Q8. Jika Anda buka URL singkatan tersebut di browser otomatis akan diarahkan ke URL aslinya. Anda bisa integrasikan function di atas dengan sebuah form untuk memasukkan URL yang akan disingkat. Menarik bukan???
Nah… selamat mencoba, semoga bermanfaat.
| Baca Juga Artikel Terkait |
Kata kunci: google api - penyingkat url - url shortener -




Mas Rosihan, saya masih rancu penggunaan antara php curl dengan fopen() url, perbedaannya dimana mas, mohon pencerahannya
@bimosaurus: curl itu dapat dimanfaatkan untuk request data baik dalam POST atau GET method. Sedangkan fopen() setahu saya itu function untuk membaca file, yang menggunakan GET request. Beberapa hosting mendisabled fitur fopen() karena dirasa kurang aman dibandingkan curl.
wah… makin sip aja pak..
Maaf pak, sy mau nanya lagi… sy punya tabel tahunajaran status ‘Aktif’.
Kalau di PHP, scriptnya supaya membuat tampilan tahunajaran itu aktif dan yang lainnya otomatis tidak aktif, itu gimana ya pak? Terimakasih..
gimana kalo urlnya gak pake google API melainkan disimpan di database sendiri
om itu otomatiskah
@timothy: iya otomatis…
maaf mas rosihanari, sy mau tanya tp agak meleceng dikit dari artikel diatas. Gini mas, sy salah satu pengunjung setia blog mas dan mendapati artikel ini http://blog.rosihanari.net/membuat-script-komentar-ala-blog yang ingi sy tanyakan, bagaimana membuat validasi formnya agar komentar gak bole kosong gitu? sy udah otak atik biar aman, tp gak efektif.
Asslm Pak Dosen, newbie izin ikut belajar2 dulu neh, nanti kalo udah agak2 ‘terang’ dikit otaknya, mau beli bukunya..
ada tutorial CURL juga mas?
@andrew franico: silakan anda search di blog ini dg kata kunci: CURL
lengkap sekali infonya pak, terimakasih sudah share
ckckckck … emang klo bukan anak kuliahan, susah ngertinya yak bahasa yg bginian .. sukses aja mas buat aktifitasnya