RESTful Web Services

Latar Belakang Web Services (Programmable Web) Website yang kita buat tentu kita desain agar  manusia dapat dengan mudah dan nyaman untuk mengakses informasi yang ada didalamnya. Namun,  bagaimana jika yang mengakses website kita adalah sebuah program komputer? Sudah menjadi rahasia umum, jika programmer sering menggunakan cara tidak resmi untuk mendapatkan informasi yang ada dalam sebuah website  dengan teknik screen-scraping misalnya. Namun sayang, program komputer tidak se-fleksibel manusia dalam hal menafsirkan data yang ada dalam sebuah website. Maka, muncullah teknologi seperti RSS, XML-RPC, SOAP, RESTful Web Services, dll. Teknologi-teknologi tersebut dibuat untuk membuat website kita lebih mudah dibaca atau ditafsirkan oleh program komputer. Apa Itu RESTful Web Services? RESTful Web Services mengacu pada sebuah cara atau gaya dalam membangun sebuah sistem web services dengan memanfaatkan semua fitur/potensi yang dimiliki oleh teknologi HTTP (Hypertext Transfer Prot

Membuat RESTful endpoint untuk Kontak

Jika minggu lalu kita sudah Membuat RESTful endpoint untuk Lokasi dan Kategori, minggu ini kita akan membuat endpoint untuk kontak.

Membuat Base Controller

Langsung saja, kita mulai dengan  membuat base controller baru bernama ActiveController turunan dari \yii\rest\ActiveController. Base controller ini akan kita gunakan di controller kontak dan iklan, berbeda dengan base controller yang kita buat minggu lalu, base controller ini secara default memiliki beberapa action yang bisa kita gunakan untuk melakukan operasi CRUD melalui model ActiveRecord. Seperti biasa, base controller ini  akan menerapkan CORS filter ditambah dengan authenticator menggunakan \yii\filters\auth\HttpBearerAuth. Jadi, silahkan buat file baru bernama ActiveController.php di folder controllers.

Membuat Kontak Controller

Secara sederhana spesifikasi dari KontakController adalah sebagai berikut.
1. Turunan dari base controller ActiveController yang telah kita buat
2. Kita akan meng-override method actions(), dan sedikit memodifikasi index action agar hanya menampilkan data kontak yang dibuat oleh user terautentikasi, kita bisa melakukannya dengan membuat method prepareDataProvider() pada class KontakController dan mengatur properties $prepareDataProvider dari \yii\rest\IndexAction dengan method tersebut.
3. Kita akan meng-override method checkAccess(), untuk memeriksa apakah data kontak yang akan diakses adalah milik user yang terautentikasi atau bukan. Jika bukan, maka kita akan lempar error dari \yii\web\ForbiddenHttpException.

Menambahkan Rules Baru di Config urlManager

Karena kita menggunakan ActiveController yang secara default sudah memiliki action index, view, create, update, delete, dan options maka dengan mudah kita dapat menggunakan \yii\rest\UrlRule membuat route untuk semua action yang ada pada controller tersebut.

Memodifikasi model Kontak

Untuk mencatat waktu pembuatan dan pembaruan data kontak kita akan menggunakan \yii\behaviors\TimestampBehavior dan untuk mencatat user id pembuat kontak kita akan menggunakan \yii\behaviors\AttributeBehavior.

Melakukan pengujian dengan menggunakan postman

1. Lakukan request GET /kontak 

Karena kita menerapkan autentikasi  \yii\filters\auth\HttpBearerAuth untuk KontakController, jadi kita harus menyertakan token yang kita dapat dari endpoint POST /auth/login. JIka tidak, maka kita tidak bisa mengaksesnya.

2. Request Token POST /auth/login dengan username dan password yang valid

3. Sertakan token yang didapat tersebut melalui request header, isi kolom key dengan Authorization dan value dengan Bearer  [token/jwt]

4. Coba lakukan request berikut.
- GET /kontak (menampilkan data kontak yang dibuat oleh user terautentikasi)
- POST /kontak dengan mengirim data (nama, no_hp, whatsapp,telegram, line, bbm) (membuat data kontak baru)
- PATCH /kontak/[id]  (memperbarui data kontak berdasarkan id yang diberikan)
- DELETE /kontak/[id] (menghapus data kontak berdasarkan id yang diberikan)
- GET /kontak/[id] (melihat data kontak berdasrkan id yang diberikan)


Sampai disini postingan minggu ini, kita lanjut minggu depan..

Terimakasih.



Comments

Post a Comment



Popular posts from this blog

Google News Feed API Alternative