Membuat REST API Menggunakan Lumen Laravel

Membuat REST API Menggunakan Lumen Laravel

Sobatcoding.com - Tutorial Membuat Rest Full API Laravel menggunakan Lumen Laravel

 

API ( Application Programming Interface ) adalah sebuah interface yang dapat menghubungkan sebuah aplikasi dengan aplikasi lainnya. Dengan adanya API bisa membantu developer dalam menghubungkan dua aplikasi atau lebih yang dalam satu platform ataupun lintas platform.

 

REST ( Representational State Transfer )  merupakan salah satu jenis arsitektur API yang cukup populer sekarang. Kelebihan dari REST tidak membutuhkan coding yang panjang dalam proses pengembangannnya. REST memiliki bentuk data berupa JSON, dimana memiliki keuntungan dari sisi performa aplikasi yang lebih ringan jika menggunakan JSON.

 

Lumen laravel adalah sebuah micro framework yang dikembangkan oleh 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.

 

Untuk lebih jelasnya perhatikan langkah-langkah berikut ini.

 

Install Lumen Laravel

Untuk proses install kalian bisa download lumen laravel secara langsung menggunakan composer dengan perintah sebagai berikut

composer create-project --prefer-dist laravel/lumen rest_api

Tunggu hingga proses download selesai.

 

Konfigurasi Key

Sebelum menjalankan lumen, kita perlu generate key terlebih dahulu. Berbeda dengan laravel yang menggunakan perintah php artisan key:generate, kita perlu membuat route manual untuk bisa generate key tersebut. Caranya sangat mudah pertama kita buat dulu sebuah routing seperti berikut

$router->get('/key', function () use ($router) {
    return \Illuminate\Support\Str::random(32);
});

 

Konfigurasi Database

Sebelumnya kita telah membuat database rest_api dan table bernama m_users. Jika kalian belum membuat database, silahkan kalian buat table terlebih dahulu. Kalian bisa import mysql dari kode berikut:

-- --------------------------------------------------------
-- Host:                         localhost
-- Server version:               5.7.24 - MySQL Community Server (GPL)
-- Server OS:                    Win64
-- HeidiSQL Version:             10.2.0.5599
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;


-- Dumping database structure for rest_api
CREATE DATABASE IF NOT EXISTS `rest_api` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
USE `rest_api`;

-- Dumping structure for table rest_api.m_users
DROP TABLE IF EXISTS `m_users`;
CREATE TABLE IF NOT EXISTS `m_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `address` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `phone` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Dumping data for table rest_api.m_users: ~0 rows (approximately)
DELETE FROM `m_users`;
/*!40000 ALTER TABLE `m_users` DISABLE KEYS */;
INSERT INTO `m_users` (`id`, `name`, `address`, `phone`, `created_at`, `updated_at`) VALUES
	(1, 'Hadi Cahyono', 'Jl Majapahit No 55', '08134323456', '2021-09-29 11:50:05', '2021-09-29 11:50:06'),
	(2, 'Eni Nurdiana S.', 'Jl Bunga Mawar No 121', '085762310001', '2021-09-29 12:06:01', '2021-09-29 12:06:02');
/*!40000 ALTER TABLE `m_users` ENABLE KEYS */;

/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

Jika sudah, silahkan kalian buka file .env dan sesuaikan konfigurasi database masing-masing.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=rest_api
DB_USERNAME=root
DB_PASSWORD=

 

Membuat Routes API

Buka file web.php yang ada di folder routes, dan tambahkan kode berikut:

$router->get('/users', 'UsersController@index' );
$router->get('/users/{id}', 'UsersController@show' );
$router->post('/users', 'UsersController@store' );
$router->post('/users/update', 'UsersController@update' );
$router->delete('/users/delete/{id}', 'UsersController@destroy' );

 

Membuat Model

Buatlah sebuah model bernama Users.php dan simpan didalam folder App\Models, kemudian masukkan kode berikut:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    
    protected $table = 'm_users';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'address', 'phone'
    ];

}

 

Membuat Controller

Buatlah sebuah controller dengan nama UsersController.php dan masukkan kode seperti berikut

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
use App\Models\Users;

class UsersController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    public function index()
    {
        $data = Users::get();
        return response()->json($data, 200);
    }

    public function show($id)
    {
        $data = Users::where('id', $id)->first();
        return response()->json($data, 200);
    }

    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
                'name'        => 'required',
                'address'     => 'required',
                'phone'       => 'required',
            ],
            [
                'name'  => ':attribute harus diisi',
                'address'   => ':attribute harus angka',
                'phone'     => ':attribute minimal :min karakter',
            ]);

        if ($validator->fails()) {
           
            return response()->json($validator->errors()->first(), 400);
            die();
        }

        $data = new Users;
        $data->name = $request->post('name');
        $data->address = $request->post('address');
        $data->phone = $request->post('phone');
        $data->save();

        return response()->json($data, 201);

    }

    public function update(Request $request)
    {
        $validator = Validator::make($request->all(), [
                'id'        => 'required',
                'name'      => 'required|nullable',
                'address'   => 'required|nullable',
                'phone'     => 'sometimes|nullable',
            ]);

        if ($validator->fails()) {
           
            return response()->json($validator->errors()->first(), 400);
            die();
        }

        $data = Users::where('id', $request->post('id'))->first();
        if( $data )
        {
            $data->name = $request->post('name') ? $request->post('name') : $data->name;
            $data->address = $request->post('address') ? $request->post('address') : $data->address;
            $data->phone = $request->post('phone') ? $request->post('phone') : $data->phone;
            $data->save();
    
            return response()->json($data, 200);
        }else{
            return response()->json("Data tidak ditemukan", 400);
        }
        

    }

    public function destroy($id)
    {
        
        $data = Users::where('id', $id)->delete();
        return response()->json('Data berhasil dihapus', 200);
    }

}

 

Cara Menjalankan Lumen Laravel

Berbeda dengan laravel untuk menjalankan lumen kalian hanya perlu menjalankan perintah seperti berikut

php -S localhost:8000 -t public

 

Jalankan routes key di browser untuk mendapatkan key, kemudian copy ke variable APP_KEY dan simpan file .env.

Setelah semua tahapan di atas selesai, mari kita coba tes API di atas menggunakan aplikasi POSTMAN. Hasil dari test di atas jika berhasil adalah seperti gambar berikut:

API get users

Gambar API get users

 

API get users by id

Gambar API get users by id

 

API post user

Gambar API post new user

 

API update user

Gambar API update user

 

API delete user

Gambar API hapus user

 

Sekian tutorial kali ini. Jika teman-teman memiliki pertanyaan atau saran mengenai artikel ini, jangan ragu untuk meninggalkan komentar pada form di bawah ini.

Semoga bermanfaat.