Pengenalan JSON-RPC part 1
Waduh, makhluk apa lagi ini JSON-RPC??? JSON-RPC adalah format komunikasi data yang sangat ringan dan simple.
Jika kita membuat aplikasi client-server, entah itu aplikasi desktop maupun aplikasi berbasis web (AJAX), yang biasanya servernya menggunakan middleware (PHP, Java EE, Python, RoR, dst), hal yang paling sering menjadi pertanyaan adalah “Untuk komunikasi datanya pakai apa?”.
Jawaban yang sering kita dengar biasanya HTTP POST/GET dengan format data berupa plain text, CSV, XML, maupun JSON. Namun komunikasi data ini tidak memiliki standar, dan sangat “sesuka gw”.
Kalau sedang beruntung (atau sial yak?) kita mungkin akan mendengar komunikasi data yang lebih canggih seperti SOAP, XML-RPC, AMF, Hessian, atau yang lagi hype saat ini, REST. Namun komunikasi data ini cukup kompleks untuk diterapkan, terkadang hanya berjalan di platform tertentu (AMF, Hessian), terkadang ukuran transfer datanya sangat besar (SOAP).
JSON-RPC umumnya menggunakan HTTP POST untuk mengirimkan request ke server. Pada request tersebut sudah ada informasi mengenai nama method yang akan dipanggil beserta parameter-parameter yang dibutuhkan. Semua dalam bentuk JSON dan sudah terstruktur sesuai dengan spesifikasi JSON-RPC.
JSON-RPC merupakan Remote Procedure Call (RPC), dimana client akan “memanggil” fungsi/method yang ada di Server. Misalnya server memiliki method findPersonByName, membutuhkan parameter berupa string name, dan akan mengembalikan Array dari object Person yang berisi properti name dan age.
Contoh request JSON-RPC, dikirimkan menggunakan HTTP POST:
{
"id":"123456abcd",
"jsonrpc":"2.0",
"method":"findPersonByName",
"params":["Herloct"]
}
Pada request tersebut dapat kita artikan bahwa client ingin memanggil method bernama findPersonById, dengan parameter string berupa “Herloct”.
Contoh response JSON-RPC, apabila berhasil:
{
"id":"123456abcd",
"jsonrpc":"2.0",
"error":null,
"result":[
{
"name":"Herloct",
"age":8,
}, {
"name":"Captain Herloct",
"age":56,
}, {
"name":"Herloct HENT",
"age":23,
}
]
}
Pada response tersebut dapat kita lihat jika server mengirimkan array object yang memiliki properti name dan age.
Contoh response JSON-RPC, apabila terdapat error/exception:
{
"id":"123456abcd",
"jsonrpc":"2.0",
"result":null,
"error":{
"code":-101,
"message":"Cannot find Person with name 'Herloct'."
}
}
Pada response tersebut juga dapat kita lihat jika server mengirimkan pesan error/exception dengan kode error 101, dan dengan message “Cannot find Person with name ‘Herloct’.”.
Bagaimana? Sangat Simple bukan??? Simple namun semua informasi tetap terjaga, terstruktur, dan sesuai dengan standar. Format JSON juga terkenal ringan dan sudah tersedia hampir di semua bahasa pemrogramman.
Untuk Part 2, kita akan coba membahas lebih dalam lagi Spesifikasi dari JSON-RPC.
Sumber :
- http://www.jsonrpc.org/
- http://en.wikipedia.org/wiki/JSON-RPC
- Pengalaman sendiri setelah beberapa lama menggunakan JSON-RPC di Java EE (Spring + jsonrpc4j) maupun PHP (Zend Framework’s JSON Server)
