RESTful API Frameworks for PHP

Selama ini saya sering mendapatkan pertanyaan bervariasi mengenai REST dan API. Kalau anda bingung apa itu REST silahkan searching sendiri di google atau bisa baca sedikit di link berikut http://augindonesia.org/tandif-filtering-rest-api-adobe-air/. Lalu sebagian teman-teman developer atau yang kebetulan ingin membuat juga REST API bertanya kepada saya bagaimana caranya. Sebenarnya sudah banyak bertebaran dimana-mana REST Framework yang tinggal dipakai, dan pastinya tergantung dari bahasa pemrograman yang akan dipakai.

Jika anda akan serius membuat REST API untuk konsumsi publik, saya amat sangat tidak menyarankan anda untuk menggunakan PHP, kecuali anda menyulapnya menggunakan hip-hop PHP. Well tanpa berbasa basi lagi, ini lah list RESTful API Frameworks untuk PHP :

  • Slim, Saya sangat menyukai yang satu ini karena pengembangannya termasuk yang paling aktif dan serius dibandingkan Framework sejenis lainnya dan cukup lengkap.
  • Restler, Ini yang termasuk paling mudah dan asik untuk newbie, saya menyarankan anda untuk mencoba ini terlebih dahulu, kebetulan saya pernah berkontribusi sedikit dan Developernya adalah teman saya https://twitter.com/_Arul. (Special Thanks for helping me all this time)
  • Frapi, Frapi menyediakan web apps untuk membuat kerangka code.
  • Apify, Jika anda sudah terbiasa dengan Zend Framework, maka pasti bisa menggunakan ini.
  • Recess, Yang satu ini menggunakan MVC Style.
  • Zend Framework, Zend Framework memang sangat disegani dan juga menyediakan Class Zend_Rest_Server. Tapi sayangnya sangat mengecewakan sekali. Ingat ! jangan pakai Zend Framework untuk membuat REST API Server.
  • Tonic, Anda bisa coba sendiri yang satu ini, terlihat mudah tapi sayangnya dokumentasi tidak jelas dan tidak lengkap.
  • Dave, Jangan pakai ya ! Developernya saja sudah tidak mau ngurus lagi :D
  • Epiphany, Support module dan cukup menarik
  • SimpleREST, Sangat simple dan saat ini baru mensuport GET dan POST saja.
  • Limonade, Menurut si developer Limonade terispirasi dari framework lainnya seperti Sinatra atau Camping di Ruby, dan Orbit di Lua.

Jika anda bertanya saya pilih mana ? saya akan pilih Restler dan Slim. keduanya memiliki keunggulan masing-masing, Jika anda ingin suatu yang mudah dan powerfull, silahkan gunakan Restler, Jika API yang akan anda bangun cukup rumit dan bersifat custom, silahkan gunakan Slim.

Sebagian framework diatas mendukung custom view, silahkan pilih dengan bijak !

UPDATE :

Pada saat pertama kali artikel ini ditulis, saya agak condong untuk memilih Slim, namun saya sangat kaget melihat update dari Restler dengan versi barunya, yaitu versi 3. Banyak sekali peningkatan dan sangat advance tanpa learning curve, sehingga saya sekarang sangat menyarankan untuk para pembaca menggunakan Restler 3(saat ini masih RC3).

Clear/Flush DNS cache di Windows / Linux / Mac

Bagi anda yang terus menerus mendapatkan DNS Error ketika sedang browsing, sedangkan komputer di sebelah anda atau komputer lainnya tidak mengalami masalah serupa, kemungkinan besar ini karena masalah DNS Cache pada komputer anda. Solusinya anda harus mereload DNS cache pada mesin anda. Terkadang ini terjadi juga kalau anda habis migrasi ns domain, dan masih saja ns merujuk ke alamat yang lama.

Dan berikut caranya,

Windows

  1. Start >> Run >> cmd (Pada windows Vista atau 7, klik kanan lalu Run as Administrator)
  2. Ketik “ipconfig /flushdns” (Tanpa kutip)

atau

  1. Start >> Run >> cmd (Pada windows Vista atau 7, klik kanan lalu Run as Administrator)
  2. Ketik “net stop dnscache” (Tanpa kutip)
  3. Ketik “net start dnscache” (Tanpa kutip)

Linux

  1. Ketik “cd /etc/rc.d/init.d” (Tanpa kutip)
  2. Ketik “./nscd restart ” (Tanpa kutip)

Mac Tiger

Ketik “lookupd -flushcache” (Tanpa kutip)

Mac Leopard

Ketik “dscacheutil -flushcache” (Tanpa kutip)

plperl on PostgreSQL 9.0.4

Yeah banyak sekali trouble yang saya hadapi sebagai tantangan dalam riset saya. Salah satunya adalah kekurangan regexp_replace pada PostgreSQL

berawal dari kebutuhan saya menggunakan engine regex untuk Unicode yang tidak bisa terpenuhi menggunakan fungsi bawaan PostgreSQL yaitu regexp_replace. Akhirnya saya terpaksa menggunakan engine regex milik Perl yang yang harus diinstal sebelum menggunakannya.

Instalnya cukup mudah, cukup dengan menjalankan perintah > createlang plperl dbname. Sebenarnya pada distribusinya PostgreSQL sudah menambahkan PL/PgSQL, PL/Tcl, PL/Perl, and PL/Python.  Dan masing masing database akan ikut diinstalkan jika menggunakan “template1”. Namun karena saya menggunakan “template0” yang berarti kosong, jadi saya harus menjalankan perintah > createlang plperl dbname.

Permasalahannya adalah muncul error berikut :

createlang: language installation failed: ERROR:  could not load library “C:/Program Files (x86)/PostgreSQL/9.0/lib/plperl.dll”: The specified module could not be found.

Ya eror ini muncul karena dua kemungkinan, yaitu :

  • Belum diInstall-nya Pearl Itu sendiri
  • ATAU plperl.dll membutuhkan perl versi khusus.(Manja banget sih -_-!)

Hal yang harus dilakukan adalah dengan melihan ketergantungan si plperl.dll dengan menggunakan software Dependency walker dan lihat kebutuhan yang kurang. Pada komputer saya yang kurang adalah perl510.dll dan posgres.exe


Untuk Postgres.exe, caranya cukup mudah yaitu dengan memasukkan PATH “C:\Program Files (x86)\PostgreSQL\9.0\bin” pada “environment variables” di Windows. Berarti sekarang sisa yang bermasalah adalah versi Perl saya, sekarang saya harus menginstal versi yang sesuai, yaitu 5.10. Setelah mencari, akhirnya saya menemukan Strawberry Perl 5.10. Yeah, Instal dan jangan lupa restart database server anda dan jalankan kembali perintah > createlang plperl dbname. InsyaAllah semua akan berjalan lancar tanpa error.

Pesan : Software Dependency walker dapat anda gunakan untuk melihat ketergantungan dari plperl.dll, yang mungkin akan berbeda-beda untuk setiap kasus/versi dari PostgreSQL. Silahkan lihat apa yang kurang dan cari sendiri versi Perl yang sesuai.

Semoga bermanfaat

Ahmad Fathi hadi

Flash XML Graphics (FXG), Apa itu ?

Flash XML Graphics (FXG) adalah sintax untuk medefinisikan grafik dalam Flex. Mungkin bagi anda yang pernah membaca artikel saya mengenai degrafa yang berjudul “Degrafa untuk Pemula” di http://www.indonesianflexcommunity.org/tutorial-flex/41-design/91-degrafa-untuk-pemula , anda akan mudah dalam memahami FXG.

Sebenarnya FXG dibuat agar para designer bisa bekerja terpisah dengan developer. Maksudnya ?, ya maksud saya adalah dengan menggunakan tools seperti Adobe Photoshop CS4, Illustrator CS4 and Fireworks CS4, kita akan bisa merubahnya kedalah format FXG dan bisa dipakai dalam aplikasi Flex kita. Namun sayangnya format FXG bisa digunakan menggunakan Flex 4 SDK dan termasuk dalam bagian spark .  Maaf ya :)

Anda bisa menggunakan FXG element langsung didalam sintax MXML ataupun berdiri sendiri sebagai Custom Component.

Contoh :

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768">
	<mx:Panel title="Ellipse" height="247" width="279" layout="horizontal" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" x="259" y="154">
		<s:Graphic x="0" y="0">
			<s:Ellipse height="100" width="250">
				<s:stroke>
					<s:SolidColorStroke color="0x000000" weight="2"/>
				</s:stroke>
				<s:fill>
					<s:RadialGradient>
						<s:entries>
							<s:GradientEntry color="0x1c64a7"/>
							<s:GradientEntry color="0x114371"/>
						</s:entries>
					</s:RadialGradient>
				</s:fill>
				<s:filters>
					<mx:DropShadowFilter/>
				</s:filters>
			</s:Ellipse>
		</s:Graphic>
	</mx:Panel>
</s:Application>
Ellipse FXG

Ellipse FXG

FXG bisa berada dalam file *.mxml dan *.fxg dengan syarat berada didalam tag <Graphic>

Tidak hanya itu, kita juga bisa menggunakan tag <Library> dan <Definition>, yang berfungsi semacam deklarasi FXG yang nantinya bisa kita pakai dengan memanggil namanya.

Contoh :

<?xml version="1.0" encoding="utf-8"?>
<!-- Ahmad Fathi Hadi/FXGLibraryExample.mxml -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/halo" xmlns:s="library://ns.adobe.com/flex/spark" >
	<fx:Library>
		<fx:Definition name="EllipseFathi">
			<s:Graphic x="0" y="0">
				<s:Ellipse height="100" width="250">
					<s:stroke>
						<s:SolidColorStroke color="0x000000" weight="2"/>
					</s:stroke>
					<s:fill>
						<s:RadialGradient>
							<s:entries>
								<s:GradientEntry color="0x1c64a7"/>
								<s:GradientEntry color="0x114371"/>
							</s:entries>
						</s:RadialGradient>
					</s:fill>
					<s:filters>
						<mx:DropShadowFilter/>
					</s:filters>
				</s:Ellipse>
			</s:Graphic>
		</fx:Definition>
	</fx:Library>
	<mx:Panel title="Library Example" height="314" width="528" layout="absolute" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" x="93" y="31">
		<fx:EllipseFathi x="0" y="0"/>
		<fx:EllipseFathi x="255" y="105"/>
		<fx:EllipseFathi x="0" y="105"/>
		<fx:EllipseFathi x="255" y="0"/>
	</mx:Panel>
</s:Application>
FXG Library Example

FXG Library Example

Mungkin dengan anda melihat contoh kode yang saya berikan, anda bisa mengerti maksud saya. (^_^)

Well, mungkin sekian dari saya untuk penjelasan singkat mengenai FXG.