Notice: get_currentuserinfo is deprecated since version 4.5.0! Use wp_get_current_user() instead. in /home/k0152185/public_html/wp-includes/functions.php on line 3839
untuk tutorial kali ini saya akan mencoba membuat sebuah Saas Software(software as a service) sederhana tentang membership dalam sebuah gym(pusat kebugaran).
tutorial kali ini merupakan lanjutan dari tutorial saya sebelumnya tutorial Api Part 1 Lumen Microframework , jika anda belum memahami di tutorial lanjutan ini silahkan baca -baca dulu di tutorial sebelumnya.
Bahan-bahan/tools yang di siapkan :
- project lumen microframework (dapat menggunakan versi tutorial sebelumnya , atau menggunakan fresh install )
- text editor (text editor yang saya gunakan kali ini adalah Ms.visual studio code)
- Console (Command promt)
setelah bahan/tools akan kita gunakan ready kita langsung saja langkah pertama adalah menjalankan service apache, mysql, dan php (kebetulan yang saya gunakan adalah laragon , jadi saya tinggal klik start all service di menu panel control panel laragon nya).
setelah dipastikan ketiga service ini running kita buat terlebih dahulu database gymdb menggunakan phpmyadmin (hanya database yang kita buat), karena untuk table kita akan generate menggunakan migrate dari console.
buka console (CMD di windows) dan masuk ke direktori project api yang kita buat.
setelah masuk ke direktori myapi kita pastikan disana terdapat file artisan, artisan.bat dll , (jika ternyata ada yang masih bingung kenapa sudah masuk ke tampilan di atas berarti silahkan pelajari perintah internal dalam console.(:p)
Api yang akan kita buat haruslah dapat menghandel request CRUD (create, read, update and delete) membership dari database gymdb.
sebelum kita membuat migrate file kita konfigurasi dahulu dotenv(.env) yang menyimpan konfigurasi dasar environtmen terutama untuk ke database. buka file.env menggunakan editor dan sesuikan .
kita coba menyiapkan migrate dengan mengetikan perintah berikut di console :
1 |
artisan make:migration create_memberships_table --create="memberships" |
berikut tampilan di console :
keberhasilan perintah membuat persiapan migrate di atas maka akan mengenerate sebuah file persiapan dengan nama <tanggal>_create_membership_table di dalam folder database/migration
file hasil generate ini yang akan kita modifikasi untuk membuat table schema database, berikut yang dapat disesuikan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateMembershipsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('memberships', function (Blueprint $table) { $table->increments('id'); $table->integer('user_id')->unsigned(); $table->date('started_at'); $table->date('last_renewed_at')->nullable(); $table->date('active_until'); $table->timestamps(); $table->foreign('user_id') ->references('id')->on('users') ->onUpdate('cascade') ->onDelete('restrict'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('memberships'); } } |
setelah persiapan skema database untuk table membership siap kita jalankan perintah untuk eksekusi skema database tersebut .
perintah eksekusi :
1 |
artisan migrate |
dari perintah migrate tersebut maka akan menghasilkan 2 table dalam database gymdb , 1 table bernama membership merupakan hasil generate dari skema database yang kita rancang di migrate file. dan 1 table bernama migrations yang otomatis di buat pada saat di generate menggunakan migrate. untuk selanjutnya juga kita dapat insert data sample .
step selanjutnya kita buat eloquent ORM Model dari tabel memberships dari database pada folder
app/memberships.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Membership extends Model { /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'user_id', 'started_at', 'last_renewed_at', 'active_until', ]; protected $table = 'memberships'; } |
di dalam folder $fillable berisi field-field atau data yang dapat di modifikasi (crud).selain itu harus juga kita buat MembershipController.php di folder controller.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php namespace App\Http\Controllers; use App\Membership; use Illuminate\Http\Request; class MembershipController extends Controller { public function index() { $memberships = Membership::all(); return response()->json($memberships); } public function read($id) { $membership = Membership::find($id); return response()->json($membership); } public function create(Request $request) { $membership = Membership::create($request->all()); return response()->json($membership); } public function update(Request $request, $id) { $membership = Membership::find($id); $updated = $membership->update($request->all()); return response()->json(['updated' => $updated]); } public function delete($id) { $deletedRows = Membership::destroy($id); $deleted = $deletedRows == 1; return response()->json(['deleted' => $deleted]); } } |
untuk selanjutnya adalah membuat routing pada project api kita dengan memodifikasi file routes.php yang ada di folder http.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It is a breeze. Simply tell Lumen the URIs it should respond to | and give it the Closure to call when that URI is requested. | untuk di os windows namespace bukan / (slash) tetapi \ (backslash) */ $app->group(['prefix' => 'api/v1', 'namespace' => 'App\Http\Controllers'], function ($app) { $app->group(['prefix' => 'membership', 'namespace' => 'App\Http\Controllers'], function ($app) { // Returns all the memberships // GET http://localhost:8000/membership $app->get('/', 'MembershipController@index'); // Returns the membership with the chosen $id // e.g. GET http://localhost:8000/membership/48 $app->get('{id}', 'MembershipController@read'); // Creates a new membership // POST http://localhost:8000/membership $app->post('/', 'MembershipController@create'); // Update the membership with the chosen $id // PUT http://localhost:8000/membership/48 $app->put('{id}', 'MembershipController@update'); // Delete the membership with the chosen $id // DELETE http://localhost:8000/membership/48 $app->delete('{id}', 'MembershipController@delete'); }); }); |
kita cek hasil pembuatan api sederhana kita di browser
kita masukkan parameter get : 1
untuk create, update mupun delete, maupun consume REST di Client akan kita di coba di next tutorial 🙂
sumber asli : http://nordicapis.com/build-api-lumen-micro-framework/
Sekian dan semoga bermanfaat