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' ) );