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

Implementasi Rancangan Database menggunakan fitur Database Migration di Yii2

Masih dalam seri tutoriai "Membuat Web Jual Beli Barang Bekas Online (BarBek) dengan Yii2  dan Riot.Js".
Berdasarkan penjelasan dari postingan pembuka minggu lalu (jika belum membacanya silahkan baca terlebih dahulu: Membangun Aplikasi Stateless (Restful Web Service) dengan Yii2 dan Single Page (Frontend) dengan Riot.JS ), seri tutorial ini akan dibagi kedalam dua bagian besar yaitu:
A. Membuat Restful Web APIs dengan YII2.
B. Membuat Single Page Application dengan Riot.JS.

Postingan kali ini merupakan merupakan posting pertama dari bagian Membuat Restful Web APIs dengan Yii2. Jadi, silahkan persiapkan perlengkapan tempur yang dibutuhkan yaitu:

1. PHP 5.4 atau yang lebih baru
2. MySQL (yang saya gunakan adalah versi 5.7.14 Homebrew) , sebenarnya anda bisa menggunakan database lain jika berminat, karena pada tutorial ini kita akan banyak menggunakan fitur database migration dari Yii2 yang mendukung berbagai macam database (lihat detalinya disini: http://www.yiiframework.com/doc-2.0/guide-db-dao.html )
3. Composer ( disarankan latest version)
4. Git dan akun GitHub
5. Postman (Chrome App)

Saya anggap kalian sudah menginstall semua software diatas. Oh ya, pada tutorial ini kita tidak akan menggunakan Apache atau NGINX untuk web server, kita akan menggunakan PHP built-in web server yang merupakan salah satu fitur yang ada sejak PHP 5.4.0 yang didesain untuk kebutuhan development aplikasi PHP. Namun, jika suatu saat kita ingin men-deploy aplikasi kita di server (production server) silahkan gunakan Apache atau NGINX.

Oke, kita lanjutkan. Langkah selanjutnya adalah menginstal Yii2 via Composer dan membuat  satu database MySQL via command line.

6. Install Yii2 basic template via Composer dengan nama "barbek"  (baca disini untuk cara instalasi Yii2: http://www.yiiframework.com/doc-2.0/guide-start-installation.html)

7. Membuat database MySQL dengan nama "barbek" (baca disini untuk cara membuat database baru di MySQL: http://dev.mysql.com/doc/refman/5.7/en/creating-database.html)

Note : Sebagai seorang developer tentu mengunjungi dan membaca halaman dokumentasi resmi dari software atau framework yang kita gunakan adalah hal yang wajib dilakukan karena disana kita dapat menemukan panduan dari mulai hal yang mendasar seperti petunjuk instalasi hingga dokumentasi detail mengenai kegunaan dari semua class beserta properties dan methods yang ada didalamnya (api/class reference). 

Jadi, dalam tutorial ini saya tidak akan menjelasakan hal-hal dasar yang sudah terpampang nyata di halaman dokumentasi. Namun, jika kalian mengalami permasalahan saat mencoba mempraktikkan panduan yang ada dalam dokumentasi silahkan sampaikan di komentar.

Langkah selanjutnya, adalah membuat repository GitHub untuk me-manage source code yang kita buat, silahkan buat repository baru disini https://github.com/new (pastikan kalian sudah punya akun dan login di GitHub). Untuk source code bagian pertama dari seri tutorial ini kita akan menamakannya "barbek-restful-api".


Note : seluruh source code yang saya buat akan saya push ke https://github.com/ydatech/barbek-restful-api

Jika kalian sudah membuat repository-nya, sekarang saatnya menghubungkannya dengan source code Yii2 yang sebelumnya telah kita install. Buka terminal atau command line kalian, dan silahkan masuk ke direktori dimana kalian menginstall Yii2 basic template dengan nama barbek tadi. Kemudian ketikkan perintah perintah berikut ini :

Konfirmasi apakah source code yang kita tambahkan tadi sudah berada di GitHub dengan mengujungi halaman repository yang kita buat.


Tips : Anda sebaiknya memilih private repository jika projek yang anda buat bukan atau tidak akan dijadikan open source.

Sampai disini, kita sudah siap untuk move on ketahap selanjutnya yaitu mulai melakukan development Restful Web APIs dari BarBek.

Kita mulai dari menentukan fitur apa saja yang akan ada di BarBek, berikut adalah fitur utama yang akan kita kembangkan dalam aplikasi BarBek kita.

1. Registrasi penjual (user)
2. Penjual (user) login dan logout
2. Pasang iklan barang bekas untuk penjual
3. Manage iklan barang bekas untuk penjual
4. Pencarian iklan berdasarkan kategori dan lokasi untuk pembeli (pengunjung/visitor)
5. Lihat detail iklan untuk pembeli (pengujung)

Aplikasi ini memiliki dua tipe pengguna yaitu penjual dan pembeli. selanjutnya penjual akan kita sebut sebagai user dan pembeli sebagai pengunjung (visitor)

Berdasarkan gambaran fitur diatas, kita bisa mulai merancang database dari aplikasi BarBek ini. berikut adalah rancangan awal database aplikasi BarBek:
Desain database BarBek
dibuat menggunakan https://www.draw.io

Note: Gambar diatas merupakan desain atau rancangan awal, dalam proses development kemungkinan perubahan selalu ada. Baik rancangan awal ataupun perubahan akan selalu kita buat melalui fitur database migration Yii2.

Langkah selanjutnya adalah mengimplementasikan rancangan database tersebut kedalam database MySQL barbek yang sudah kita buat sebelumnya. Seperti yang sudah disebutkan, dalam tutorial ini kita akan menggunakan fitur database migration Yii2. Sebelum kita melakukan implementasi tersebut, kita harus mengkoneksikan aplikasi Yii2 kita dengan database barbek. Silahkan edit database name yang ada di file config/db.php menjadi barbek, secara default Yii2 memberikan configurasi database untuk MySQL, namun jika kalian menggunakan database lain silahkan pelajari halaman dokumentasi ini: http://www.yiiframework.com/doc-2.0/guide-db-dao.html. Jangan lupa edit juga username dan password sesuai dengan configurasi MySQL server kalian. Sebagai contoh, ini adalah configurasi database yang saya punya.


Langkan-langkah dibawah ini harus dilakukan sesuai nomor urutnya tidak boleh acak.

1. user

Pertama, kita akan membuat database migration untuk tabel user, silahkan buka terminal/cmd/powershell kemudian masuk ke direktori/folder dimana aplikasi BarBek kita berada, ketikkan perintah berikut ini:

Setelah kita menekan tombol enter dan mengkonfirmasi untuk membuat database migration tersebut maka sebuah file yaitu: migrations/m[yymmdd_hhmmss]_create_user_table.php akan dibuat/digenerate. Dimana [yymmdd_hhmmss] merupakan informasi waktu saat kita membuat/men-generate file tersebut. Berikut adalah contoh file migration tabel user yang saya generate:

Jika kita lihat terdapat dua methods yang diimplementasikan yaitu up() dan down(). Dimana, up() digunakan untuk melakukan perubahan pada struktur database, dan down() digunakan untuk mengembalikan struktur database ke struktur sebelum perubahan pada  up() diimplementasikan. Misalkan,  jika pada method up() kita membuat tabel baru, maka pada method down() kita menghapus tabel tersebut. Untuk informasi lengkap tentang database migration Yii2 silahkan kunjungi halaman dokumentasi ini: http://www.yiiframework.com/doc-2.0/guide-db-migrations.html.

2. kontak

Berikutnya, kita akan membuat database migration untuk tabel kontak.

File migration yang digenerate:

Jika kita bandingkan kode yang digenerate sedikit berbeda dengan kode untuk table user, yaitu adanya tabel index dan foreign key yaitu user_id.


3. provinsi

Untuk membuat database migration untuk  tabel provinsi silahkan ketikkan perintah berikut:

Kali ini, kita akan melakukan modifikasi pada kode database migration hasil generate Yii2. Pertama, kita akan mengubah method yang diimplementasikan pada class migration untuk membuat tabel provinsi dari up() menjadi safeUp() dan down() menjadi safeDown(). Hal ini perlu dilakukan karena kita akan melakukan transaksi insert data-data provinsi secara langsung. Kedua, kita akan menambahkan bebarapa baris kode untuk insert data provinsi dari file csv ke tabel provinsi yang berada didatabase barbek. Untuk data provinsi kita akan menggunakan data yang ada disini. Simpan file tersebut pada folder migrations dengan nama provinsi.csv. untuk membaca file csv tersebut saya akan menggunakan sebuah library bernama league/csv. Install library tersebut melalui composer dengan mengetikkan perintah berikut:

4. kota

Untuk membuat database migration untuk tabel kota silahkan ketikkan perintah berikut:

Sama halnya dengan provinsi kita akan melakukan modifikasi dan transaksi insert data kota. Data kota yang digunakan ada disini. Silahkan simpan dengan nama kota.csv di folder migrations .

Sampai disini kita sudah membuat 4 database migration untuk 4 tabel yaitu user, kontak, provinsi, dan kota. Kita bisa menerapkannya ke MySQL database BarBek dengan mengetikkan perintah berikut:


Ada tiga tabel lagi yang belum kita buat database migration-nya yaitu tabel kategori, subkategori, dan iklan. Kita akan lanjutkan lagi minggu depan sekalian dengan membuat model oke... takut kepanjangan..

NB: Jangan lupa add, commit dan push source code kalian ke repo github masing masing ya..

Terimakasih..

Selanjutnya, Membuat Model Menggunakan Fitur Gii Console Command di Yii2 

Comments



Popular posts from this blog

Membuat RESTful endpoint untuk Kontak

Google News Feed API Alternative