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.
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.
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);
});
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=
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' );
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'
];
}
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);
}
}
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:
Gambar API get users
Gambar API get users by id
Gambar API post new user
Gambar API update 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.
Komentar 0