Jumat, 27 Desember 2019

PHP Lumen Client APP




Lumen adalah Micro-framework yang diciptakan pengembang Laravel untuk mengakomodasi kebutuhan developer yang ingin membuat aplikasi dalam skala lebih kecil dari Laravel. Karena banyak library yang dihilangkan dalam bundle source code, Lumen bisa dijadikan framework untuk membuat REST API.

Deskripsi
Kita akan membuat aplikasi (Client) yang bisa melakukan request ke Web Service (API)
menggunakan PHP Lumen. Tujuan praktek ini adalah untuk:
1. Memahami bagaimana mengakses cara Web Service (API) menggunakan PHP
2. Mampu implementasi membuat aplikasi (Client) yang bisa melakukan request ke Web
Service (API)

Sebelumnya kita membuat aplikasi Web Service menggunakan Lumen. Saat ini kita akan
membuat aplikasi yang bisa mengakses Web Service menggunakan Lumen (kita sebut dengan

aplikasi Client).


Aplikasi Lumen Service App Sebagai Web Service API
Untuk implementasi Lumen Client App, kita akan menggunakan aplikasi Web Service yang
sudah kita buat. Silahkan download dan jalan aplikasi Web Service API (dalam hal ini

LumenServiceApp) dengan post 8000.

Membuat Aplikasi Lumen
Untuk instalasi dan membuat project Lumen ada dua cara:

1. Via Lumen Installer
a. composer global require "laravel/lumen-installer"

b. lumen new [NAMA_PROJECT]

c. Contoh:
lumen new LumenClientApp


2. Via Composer Installer
a. composer create-project --prefer-dist laravel/lumen [NAMA_PROJECT]

b. Contoh:
composer create-project --prefer-dist laravel/lumen LumenClientApp

3. Untuk menjalankan script di no 1 atau no 2, komputer kita harus memiliki koneksi
internet




4. Ini adalah process yang dijalankan ketika script no 1 atau no 2 dijalankan.
Process ini adalah mendownload module-module yang dibutuhkan oleh Lumen.

5. Untuk menjalankan server nya silahkan jalankan script ini di terminal/command prompt

a. Pindah direktori ke folder aplikasi yang baru dibuat:
cd LumenClientApp

b. Jalan server: Kita akan menggunakan port 9000, port 8000 kita akan gunakan
untuk LumenServiceApp
php -S localhost:9000 -t public

c. Tampilan terminal ketika berhasil running




6. Silahkan buka http://localhost:9000 di browser

7. Selamat, anda berhasil!



Membuat Fungsi Untuk Mengakses Web Service JSON (Get Request)
Untuk membuat fungsi yang bisa mengakses Web Service JSON, silahkan ikuti
langkah-langkah dibawah ini:

1. Buka file routes/web.php, tambahkan code ini, line 18




2. Buat controller dengan nama app/Http/Controllers/PostsController.php, buat function
getRequestJson dengan code nya seperti ini.




3. Dilihat dari controller nya, kita akan menggunakan module view untuk menampilkan
dalam bentuk html. Secara default folder view ada di resourcers/views.
Sekarang buat file view dengan nama resources/views/posts/getRequestJson.php.
Untuk styling nya kita akan menggunakan bootstrap
(https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css). Code nya
seperti ini.




4. Buka halaman http://localhost:9000/posts/get-request-json di browser, tampilanya
seperti dibawah ini:

5. Selesai



Membuat Fungsi Untuk Mengakses Web Service XML (Get Request)
Untuk membuat fungsi yang bisa mengakses Web Service JSON, silahkan ikuti
langkah-langkah dibawah ini:

1. Buka file routes/web.php, tambahkan code ini, line 19




2. Buat controller dengan nama app/Http/Controllers/PostsController.php, buat function
getRequestXml dengan code nya seperti ini.




3. Dilihat dari controller nya, kita akan menggunakan module view untuk menampilkan
dalam bentuk html . Secara default folder view ada di resourcers/views.
Sekarang buat file view dengan nama resources/views/posts/getRequestXml.php. Untuk
styling nya kita akan menggunakan bootstrap
(https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css). Code nya
seperti ini.




4. Buka halaman http://localhost:9000/posts/get-request-xml di browser, tampilanya seperti
ini:

5. Selesai



Membuat Fungsi Untuk Mengakses Web Service JSON (Post Request)
Untuk membuat fungsi yang bisa mengakses Web Service JSON dengan method POST,
silahkan ikuti langkah-langkah dibawah ini:

1. Buka file routes/web.php, tambahkan code ini, line 20




2. Buat controller dengan nama app/Http/Controllers/PostsController.php, buat function
postRequestJson dengan code nya seperti  ini.




3. Dilihat dari controller nya, kita akan menggunakan module view untuk menampilkan
dalam bentuk html . Secara default folder view ada di resourcers/views.
Sekarang buat file view dengan nama resources/views/posts/postRequestJson.php.
Untuk styling nya kita akan menggunakan bootstrap
(https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css). Code nya
seperti ini.




4. Buka halaman http://localhost:9000/posts/post-request-json di browser, tampilanya
seperti ini:

5. Selesai

Minggu, 15 Desember 2019

PHP Lumen Upload Media




Lumen adalah Micro-framework yang diciptakan pengembang Laravel untuk mengakomodasi kebutuhan developer yang ingin membuat aplikasi dalam skala lebih kecil dari Laravel. Karena banyak library yang dihilangkan dalam bundle source code, Lumen bisa dijadikan framework untuk membuat REST API.

Deskripsi
Tutorial ini melanjutkan project dari tutorial sebelum nya dengan nama ‘PHP Lumen Resource
Relationship’. Pada tutorial ini kita akan membahas mengenai upload media. Tujuan praktek ini
adalah untuk:
1. Mampu implementasi upload media menggunakan Lumen
2. Mampu implementasi untuk menampilkan media


Prasyarat
Harus menyelesaikan dulu modul dengan judul ‘PHP Lumen Resource Relationship’.

Studi Kasus
Pada tutorial ini kita akan menambahkan fitur user profile. User profile ini digunakan untuk
menyimpan data profil user. User dan Profile mempunyai hubungan One-to-one Relationship.
Oleh karena itu kita harus membikin tabel baru dengan nama profiles. Dibawah ini adalah
kolom-kolom yang harus ada di table profiles:
1. id → increment id
2. user_id → foreign key untuk menghubungkan dengan tabel users
3. first_name → nama depan
4. last_name → nama belakang
5. summary → ringkasan profile
6. image → image profile

Membuat Table profiles
Untuk membuat table profiles, mari kita ikuti langkah-langkah berikut ini:
1. Membuat database migration dengan menjalankan command dibawah ini pada terminal:
php artisan make:migration create_profiles_table




2. Buka file database/migrations/...create_profiles_table.php, dan ubah menjadi seperti

ini.

3. Jalankan command dibawah ini pada terminal:
php artisan migrate

4. Selesai.



Membuat Model Profile
Untuk membuat model user, ikuti langkah-langkah dibawah ini:

1. Buat file baru dengan nama app/Models/Profile.php, codenya seperti ini.

2. Selesai.

Endpoint
Untuk fitur user profile kita akan menambahkan beberapa endpoint, yakni seperti ini:

Membuat Fungsi Create dan Update Profile
Untuk membuat fungsi create dan update profile, mari kita ikuti langkah-langkah dibawah ini.

1. Buka file routes/web.php, tambahkan code ini. Lihat line 27.




2. Buat file baru app/Http/Controllers/ProfilesController.php, code nya seperti ini.




3. Test fungsi create or update profiles menggunakan postman.

4. Selesai.

Membuat Fungsi Get Profile
Untuk membuat fungsi get profile, mari kita ikuti langkah-langkah dibawah ini.

1. Buka file routes/web.php, tambahkan code ini, simpan di paling bawah.




2. Buka file app/Http/Controllers/ProfilesController.php, tambahkan function show,
code nya seperti ini.




3. Test fungsi get profiles menggunakan postman.

4. Selesai.

Membuat Fungsi Get Image Profile
Untuk membuat fungsi get image profile, mari kita ikuti langkah-langkah dibawah ini.

1. Buka file routes/web.php, tambahkan code dibawah ini. Line 35.




2. Buka file app/Http/Controllers/ProfilesController.php, tambahkan fungsi image, code
nya seperti ini.




3. Test fungsi get image profiles menggunakan postman. Kalau image nya tidak ada
seperti ini.




4. Test fungsi get image profiles menggunakan postman. Kalau image nya ada seperti ini.

5. Selesai

Jumat, 06 Desember 2019

PHP Lumen Resource Relationship




Lumen adalah Micro-framework yang diciptakan pengembang Laravel untuk mengakomodasi kebutuhan developer yang ingin membuat aplikasi dalam skala lebih kecil dari Laravel. Karena banyak library yang dihilangkan dalam bundle source code, Lumen bisa dijadikan framework untuk membuat REST API.

Deskripsi
Tutorial ini melanjutkan project dari tutorial sebelum nya dengan nama ‘PHP Lumen
Authorization'. Pada tutorial ini kita akan menambahkan fitur relationship antara model (tabel).
Tujuan praktek ini adalah untuk:
1. Memahami konsep relationship
2. Mampu implementasi fitur relationship

Prasyarat
Harus menyelesaikan dulu modul dengan judul ‘PHP Lumen Authorization’.
Endpoint Untuk Public User
Untuk public user bisa melakukan Read All dan Read Detail. Untuk mengakomodir kebutuhan

ini kita akan membuat routes dan controller baru.

Menambahkan Fungsi Public Read

Untuk menambahkan fungsi public read all, mari kita ikuti langkah-langkah berikut ini:


1. Buka file routes/web.php, tambahkan code ini:




2. Buat file controller baru dengan nama
app/Http/Controllers/PublicController/PostsController.php, kemudian tambahkan code
ini:




3. Buka file app/Models/Post.php, tambahkan code ini sebelum penutup Class:




4. Buka file app/Models/User.php, tambahkan code ini sebelum penutup Class:




5. Buka url http://localhost:8000/public/posts?page=1 di postman:




6. Buka url http://localhost:8000/public/post/2 di postman:

7. Selesai.

PHP Lumen Authorization




Lumen adalah Micro-framework yang diciptakan pengembang Laravel untuk mengakomodasi kebutuhan developer yang ingin membuat aplikasi dalam skala lebih kecil dari Laravel. Karena banyak library yang dihilangkan dalam bundle source code, Lumen bisa dijadikan framework untuk membuat REST API.

Deskripsi
Tutorial ini melanjutkan project dari tutorial sebelum nya dengan nama ‘PHP Lumen
Authentication’. Pada tutorial ini kita akan menambahkan fungsi autentikasi. Tujuan praktek ini
adalah untuk:
1. Mampu implementasi otorisasi menggunakan Lumen
2. Mampu membuat fungsi pengecekan otorisasi
3. Memahami logika untuk otorisasi

Prasyarat
Harus menyelesaikan dulu modul dengan judul ‘PHP Lumen Authentication’.

Menambahkan Column Role Pada Table users

Jika sebelumnya belum membuat table users, anda harus membuat dulu table users. Lihat

Untuk menambahkan column role pada table users, mari kita ikuti langkah-langkah berikut ini:
1. Membuat database migration dengan menjalankan command dibawah ini pada terminal:
php artisan make:migration add_role_to_users_table --table=users




2. Buka file database/migrations/..._add_role_to_users_table.php, dan ubah menjadi

seperti ini

3. Jalankan command dibawah ini pada terminal:
php artisan migrate

4. Secara default column role yang sudah terdaftar di database menjadi role=reader.

5. Kita akan memerlukan 3 users dengan role yang berbeda, silahkan bikin user dengan
role:
- admin
- editor
- reader

6. Selesai



Kebutuhan User Role

Setiap role dari user, memiliki kemampuan yang berbeda-beda, yakni:

1. Admin
- Bisa read all posts
- Bisa read detail post
- Bisa create posts
- Bisa update post
- Bisa delete post

2. Editor
- Bisa read all posts (yang dibuat oleh user yang lagi login)
- Bisa read detail post (yang dibuat oleh user yang lagi login)
- Bisa create posts
- Bisa update post (yang dibuat oleh user yang lagi login)
- Bisa delete post (yang dibuat oleh user yang lagi login)

3. Reader
- Bisa read all posts
- Bisa read detail post
- Bisa memberikan comment pada post tertentu

4. Selesai



Membuat Logika Policy Pada Read All Post

Logika police ini berguna untuk menentukan role apa bisa mengakses data apa. Untuk
implementasi kebutuhan user role diatas, kita akan menggunakan fitur policies dari Lumen.

Untuk membuat logika policy pada read all, mari ikuti langkah-langkah dibawah ini:
1. Buka file app/Providers/AuthServiceProvider.php, codenya seperti ini. Lihat line
5 - 6 dan line 33 - 36.




2. Buka file app/Http/Controllers/PostsController.php, tambahkan Gate class dan ubah
function index. Lihat line 7 - 8 dan line 18- 42.




3. Anda coba login dengan user yang role = ‘reader’, maka respon nya seperti ini.




4. Anda coba login dengan user yang role = ‘admin’ atau ‘editor’, maka respon nya seperti
ini.

5. Kalau login pakai ‘admin’, maka list post nya adalah semua posts, kalau login pakai
‘editor’ pakai list post nya hanya post yang user_id = user logged in id.

6. Selesai

Membuat Logika Policy Pada Update Post

User yang bisa melakukan update adalah ‘editor’ dan ‘admin’. Untuk ‘editor’ hanya bisa
meng-update post yang dia create, untuk ‘admin’ bisa meng-update semua post. Untuk
membuat logika policy pada create, mari ikuti langkah-langkah dibawah ini:




1. Buka file app/Providers/AuthServiceProvider.php, codenya seperti ini. Lihat line
38- 46.




2. Buka file app/Http/Controllers/PostsController.php, ubah function update. Lihat line 88-
109.




3. Anda coba login dengan user yang role = ‘user’, maka respon nya seperti  ini.




4. Kalau anda login dengan user yang valid authorization nya, maka tampilanya seperti
ini.

5. Selesai



Endpoint Untuk Public User
Untuk public user bisa melakukan Read All dan Read Detail. Untuk mengakomodir kebutuhan
ini kita akan membuat routes dan controller baru.