Panada Framework 1.0.0 Documentation

RESTfull

Panada menyediakan class REST (Representational State Transfer) untuk memudahkan dalam pembuatan aplikasi web service atau APIs.

Dalam konteks API, setidaknya ada dua aplikasi yang saling berhubungan yaitu Provider dan Consummer. Provider adalah aplikasi pemberi layanan dan Consummer adalah aplikasi yang menerima layanan.

Inisialisasi

Baik untuk Provider ataupun Consumer, library REST harus diinisialisasi terlebih dahulu.

object $this->rest = new Resources\Rest;

Provider

Sebagai penyedia layanan, maka aplikasi provider akan menerima request dari aplikasi consumer. Untuk menerima request ini gunakan method:

array $data = $this->rest->getRequest();

Selain POST dan GET, REST juga menggunakan PUT dan DELETE sebagai method request. Untuk mendapatkan jenis request method ini gunakan:

string $this->rest->requestMethod;

Berikut adalah contoh controller untuk REST Provider.

Untuk memberikan status respons pada header, tambahkan pada argument ke dua di dalam method outputJSON atau outputXML:

void $this->outputJSON($data, 200);

Berikut keterangan beberapa status header untuk digunakan sebagai respons provider.

Status Keterangan Contoh Penggunaan
200 OK Requst berhasil dilakukan.
201 Created Data baru berhasil dibuat, misalnya dengan request method PUT.
400 Bad request Gagal dalam proses request.
500 Internal Server Error Terjadi kesalahan pada proses internal.
501 Not implemented Terjadi ketidaksesuaian antara request method yang diizinkan dengan request yang dilakukan consumer. Misalnya yang diizinkan adalah POST sedangkan consumer menggunakan GET.
503 Service unavailable Jika layanan tidak tersedia.

Daftar selengkapnya bisa dilihat di halaman http://en.wikipedia.org/wiki/List_of_HTTP_status_codes.

Dalam memberikan ouput data, aplikasi API umumnya menggunakan format xml atau json. Berikut adalah method untuk menampilkan data json:

void $this->outputJSON($data);

Sedangkan untuk menampilkan data berformat xml:

void $this->outputXML($data);

Get Client Headers

Untuk mendapatkan request header dari client, Anda bisa menggunakan method getClientHeaders

array $this->rest->getClientHeaders();

Consumer

Untuk melakukan request ke API Provider, consumer menggunakan method:

$contents = $this->rest->sendRequest($uri, $method, $data);

Dimana:

Variable Keterangan
$uri Alamat url API Provider misalnya: http://api.twitter.com/1/users/show.json
$method Method request yang digunakan. Pilihannya adalah POST, GET, PUT dan DELETE.
$data Array data yang akan direquest, misalnya: $data = array('screen_name' => 'panadaframework');

Berikut adalah contoh controller untuk REST Consumer:

HTTP Response Status

Untuk mendapatkan status respon header, gunakan method:

integer $this->rest->responseStatus;

HTTP Request Authorization

Jika API Provider yang akan diakses membutuhkan otentifikasi misalnya HTTP Basic Auth, atau OAuth, maka Anda bisa memanfaatkan method setRequestAuthorization

void $this->rest->setRequestAuthorization($signature, $type = 'Basic');

Additional Request Header

void $this->rest->setRequestHeaders( array( 'Accept' => 'application/json', 'Cache-Control' => 'max-age=0', 'Connection' => 'keep-alive' ) );

Diskusi