Langsung ke konten utama

Pembuatan REST API Mudah dengan Framework Laravel



Pengembangan REST API Sederhana dengan Laravel

Persyaratan Awal:

Sebelum menginstal Laravel, pastikan komputer kita telah memenuhi persyaratan berikut:

  • PHP versi 8.0 atau yang lebih baru
  • Composer, manajer dependensi PHP
  • Node.js dan npm (Opsional, terutama untuk fitur frontend)

Langkah 1: Instalasi Laravel menggunakan Composer

Buka terminal atau command prompt dan jalankan perintah berikut untuk membuat proyek Laravel baru:

composer create-project laravel/laravel nama-proyek

nama-proyek dapat diganti dengan nama yang Kita inginkan untuk proyek Kita. Perintah ini akan mengunduh dan menginstal semua dependensi yang diperlukan untuk proyek Laravel.

Langkah 2: Menjalankan Server Lokal

Setelah selesai, masuk ke direktori proyek Laravel yang baru saja dibuat:

cd nama-proyek

Kemudian, jalankan server lokal menggunakan perintah Artisan:

php artisan serve

Ini akan menjalankan server lokal di http://localhost:8000. Buka browser dan arahkan ke URL tersebut untuk melihat halaman selamat datang Laravel.

Langkah 3: Konfigurasi File .env

Salin file .env.example ke file baru bernama .env:

cp .env.example .env

Pengaturan file .env di Laravel untuk mengkonfigurasi koneksi ke database MySQL:

DB_CONNECTION=mysql
DB_HOST=nama_host_database
DB_PORT=port_database
DB_DATABASE=nama_database
DB_USERNAME=username_database
DB_PASSWORD=password_database

Penjelasan mengenai setiap variabel di dalam file .env:

  • DB_CONNECTION: Menentukan driver database yang digunakan, dalam contoh di atas adalah MySQL.
  • DB_HOST: Nama host dari server database, bisa berupa localhost, alamat IP, atau hostname dari server MySQL.
  • DB_PORT: Port yang digunakan oleh MySQL, port default MySQL adalah 3306.
  • DB_DATABASE: Nama database yang ingin digunakan.
  • DB_USERNAME: Username dari database yang memiliki akses terhadap database yang dipilih.
  • DB_PASSWORD: Password untuk username database yang telah disebutkan sebelumnya.

Pastikan untuk menyimpan konfigurasi yang sesuai dengan pengaturan database Kita pada bagian .env agar aplikasi Laravel dapat terhubung ke database MySQL dengan benar.

Langkah 4: Migrasi Database

Jika sudah mengatur database pada file .env, jalankan migrasi untuk membuat tabel-tabel default:

php artisan migrate

Ini akan membuat tabel-tabel default yang digunakan oleh Laravel, seperti tabel pengguna (users).

Langkah-langkah Pembuatan Migration dengan Artisan

  1. Gunakan Command Artisan

    • Buka terminal atau command prompt, kemudian ketik perintah berikut:
    php artisan make:migration create_products_table
    

    Perintah di atas akan membuat sebuah file migrasi baru di dalam direktori database/migrations dengan nama yang mengikuti pola penamaan tertentu, dalam contoh ini adalah create_products_table.

  2. Definisikan Struktur Tabel dalam File Migrasi

    • Buka file migrasi yang baru dibuat di dalam direktori database/migrations. Di dalam file migrasi, Kita akan menemukan dua method yaitu up() dan down(). Fokuskan pada method up() untuk menentukan struktur tabel yang ingin Kita buat.

    Berikut adalah contoh definisi struktur tabel products dalam method up():

    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    class CreateProductsTable extends Migration
    {
        public function up()
        {
            Schema::create('products', function (Blueprint $table) {
                $table->id();
                $table->string('name');
                $table->text('description');
                $table->decimal('price', 8, 2);
                $table->timestamps();
            });
        }
    
        public function down()
        {
            Schema::dropIfExists('products');
        }
    }
    

    Di dalam method up(), terdapat Schema::create() yang digunakan untuk membuat tabel products dengan kolom-kolom yang telah didefinisikan seperti id, name, description, price, dan timestamps (created_at dan updated_at).

  3. Jalankan Migrasi

    • Setelah definisi struktur tabel selesai, Kita dapat menjalankan migrasi menggunakan command Artisan berikut:
    php artisan migrate
    

    Perintah di atas akan menjalankan semua migrasi yang belum pernah dijalankan sebelumnya dan membuat tabel products sesuai dengan definisi yang telah Kita buat di dalam file migrasi.

Langkah-langkah Pembuatan Seeder dengan Artisan

  1. Gunakan Command Artisan

    • Buka terminal atau command prompt, kemudian ketik perintah berikut:
    php artisan make:seeder ProductsTableSeeder
    

    Perintah di atas akan membuat sebuah file seeder baru di dalam direktori database/seeders dengan nama ProductsTableSeeder.

  2. Isi Seeder dengan Data Dummy

    • Buka file seeder yang baru dibuat di dalam direktori database/seeders. Di dalam file seeder, Kita akan menemukan method run() yang akan dieksekusi ketika seeder dijalankan.

    Contoh pengisian seeder dengan data dummy untuk tabel products:

    <?php
    
    namespace Database\Seeders;
    
    use Illuminate\Database\Seeder;
    use App\Models\Product;
    
    class ProductsTableSeeder extends Seeder
    {
        public function run()
        {
            Product::create([
                'name' => 'Product A',
                'description' => 'Description for Product A',
                'price' => 19.99,
            ]);
    
            Product::create([
                'name' => 'Product B',
                'description' => 'Description for Product B',
                'price' => 29.99,
            ]);
    
            // Tambahkan data dummy lainnya jika diperlukan
        }
    }
    

    Di dalam method run(), Kita dapat menggunakan model Product untuk memasukkan data dummy ke dalam tabel products.

  3. Memanggil Seeder dari DatabaseSeeder (Opsional)

    • Secara default, seeder-seeder yang ingin dijalankan secara otomatis oleh perintah php artisan db:seed terdaftar di dalam DatabaseSeeder. Kita dapat memanggil seeder yang baru dibuat di dalam DatabaseSeeder.php:

    Buka file DatabaseSeeder.php di dalam direktori database/seeders dan tambahkan pemanggilan seeder ProductsTableSeeder di dalam method run() jika belum ada:

    public function run()
    {
        $this->call(ProductsTableSeeder::class);
        // Pemanggilan seeder-seeder lainnya jika ada
    }
    
  4. Jalankan Seeder

    • Setelah seeder selesai diisi dengan data dummy, Kita dapat menjalankan seeder menggunakan command Artisan berikut:
    php artisan db:seed
    

    Perintah di atas akan menjalankan semua seeder yang terdaftar di dalam DatabaseSeeder. Jika Kita ingin menjalankan seeder tertentu, Kita dapat menggunakan opsi --class seperti ini:

    php artisan db:seed --class=ProductsTableSeeder
    

REST API Authentication dengan Laravel Sanctum

  1. Setup Laravel Sanctum Package

    composer require laravel/sanctum
    
  2. Create AuthController

    php artisan make:controller Api/AuthController
    
    <?php
    
    namespace App\Http\Controllers\Api;
    
    use App\Http\Controllers\Controller;
    use App\Models\User;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Auth;
    use Illuminate\Support\Facades\Hash;
    use Illuminate\Support\Facades\Validator;
    
    class AuthController extends Controller
    {
        public function register(Request $request)
        {
            $validator = Validator::make($request->all(), [
                'name' => 'required|string|max:255',
                'email' => 'required|string|max:255|unique:users',
                'password' => 'required|string|min:8'
            ]);
    
            if ($validator->fails()) {
                return response()->json($validator->errors());
            }
    
            $user = User::create([
                'name' => $request->name,
                'email' => $request->email,
                'password' => Hash::make($request->password)
            ]);
    
            $token = $user->createToken('auth_token')->plainTextToken;
    
            return response()->json([
                'data' => $user,
                'access_token' => $token,
                'token_type' => 'Bearer'
            ]);
        }
    
        public function login(Request $request)
        {
            if (! Auth::attempt($request->only('email', 'password'))) {
                return response()->json([
                    'message' => 'Unauthorized'
                ], 401);
            }
    
            $user = User::where('email', $request->email)->firstOrFail();
    
            $token = $user->createToken('auth_token')->plainTextToken;
    
            return response()->json([
                'message' => 'Login success',
                'access_token' => $token,
                'token_type' => 'Bearer'
            ]);
        }
    
        public function logout()
        {
            Auth::user()->tokens()->delete();
            return response()->json([
                'message' => 'logout success'
            ]);
        }
    }
    
  3. Definisikan Route

    <?php
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Route;
    
    /*
    |--------------------------------------------------------------------------
    | API Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register API routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | is assigned the "api" middleware group. Enjoy building your API!
    |
    */
    
    Route::post('/register', [\App\Http\Controllers\Api\AuthController::class, 'register']);
    Route::post('/login', [\App\Http\Controllers\Api\AuthController::class, 'login']);
    
    Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
        return $request->user();
    });
    
    Route::middleware('auth:sanctum')->group(function () {
        Route::post('/logout', [\App\Http\Controllers\Api\AuthController::class, 'logout']);
    });
    

Membuat model di Laravel tanpa migrasi dan penggunaan model tersebut:

  1. Buat Model
    Pertama, buatlah model tanpa migrasi dengan perintah:

    php artisan make:model Product
    
  2. Contoh Script dalam Model Product
    Setelah membuat model Product, berikut adalah contoh script di dalam model tersebut:

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Product extends Model
    {
        protected $table = 'products'; // Tentukan nama tabel yang sesuai
    
        protected $fillable = [
            'name', 'description', 'price',
        ];
    
        // Tambahan method atau relasi sesuai kebutuhan
    }
    
    • $table: Menentukan nama tabel yang terhubung dengan model ini.
    • $fillable: Menentukan kolom-kolom yang dapat diisi dengan mass assignment (pengisian secara masal), sehingga Kita bisa menggunakan Product::create() atau fill() untuk mengisi model.
    • Kita juga dapat menambahkan method atau relasi lainnya sesuai kebutuhan aplikasi Kita di dalam model.

Langkah-langkah Pembuatan Validasi dengan Artisan

  1. Gunakan Command Artisan

    • Buka terminal atau command prompt, kemudian ketik perintah berikut:
    php artisan make:request ProductRequest
    

    Perintah ini akan membuat sebuah form request baru di dalam direktori app/Http/Requests dengan nama ProductRequest.

  2. Definisikan Aturan Validasi

    • Buka file request yang baru dibuat di dalam direktori app/Http/Requests. Di dalam file ini, Kita akan menemukan method rules() yang digunakan untuk mendefinisikan aturan validasi untuk setiap field pada form.

    Contoh penggunaan aturan validasi untuk form request ProductRequest:

    <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;
    
    class ProductRequest extends FormRequest
    {
        public function authorize()
        {
            return true; // Sesuaikan dengan kebutuhan otorisasi Kita
        }
    
        public function rules()
        {
            return [
                'name' => 'required|string|max:255',
                'description' => 'required|string',
                'price' => 'required|numeric',
            ];
        }
    }
    

    Di dalam method rules(), Kita dapat mendefinisikan aturan validasi seperti required, string, numeric, max, dll., untuk setiap field yang ingin divalidasi.

Langkah-langkah Pembuatan Controller dengan Artisan

  1. Gunakan Command Artisan

    • Buka terminal atau command prompt, kemudian ketik perintah berikut:
    php artisan make:controller Api/ProductController --api
    

    Command ini akan membuat sebuah controller bernama ProductController di dalam direktori app/Http/Controllers.

  2. Implementasikan Fungsi CRUD dalam Controller

    • Setelah controller dibuat, Kita dapat menambahkan fungsi-fungsi CRUD ke dalamnya. Berikut contoh struktur dasar dari ProductController:
     <?php
    
     namespace App\Http\Controllers\Api;
     
     use Illuminate\Http\Request;
     use App\Http\Requests\ProductRequest;
     use App\Models\Product; // Import model Product
     
     class ProductController extends Controller
     {
         // Menampilkan semua produk
         public function index()
         {
             $products = Product::all();
             return response()->json($products);
         }
     
         // Menampilkan detail produk berdasarkan ID
         public function show($id)
         {
             $product = Product::find($id);
             if (!$product) {
                 return response()->json(['message' => 'Product not found'], 404);
             }
             return response()->json($product);
         }
     
         // Membuat produk baru
         public function store(ProductRequest $request)
         {
             $validatedData = $request->validated();
     
             $product = Product::create($validatedData);
     
             return response()->json($product, 201);
         }
     
         // Mengupdate produk berdasarkan ID
         public function update(Request $request, $id)
         {
             $product = Product::find($id);
             if (!$product) {
                 return response()->json(['message' => 'Product not found'], 404);
             }
     
             $validatedData = $request->validated();
     
             $product->update($validatedData);
     
             return response()->json($product, 200);
         }
     
         // Menghapus produk berdasarkan ID
         public function destroy($id)
         {
             $product = Product::find($id);
             if (!$product) {
                 return response()->json(['message' => 'Product not found'], 404);
             }
     
             $product->delete();
     
             return response()->json(['message' => 'Product deleted'], 200);
         }
     }
    
    

    Dalam masing-masing fungsi, kita dapat menambahkan logika bisnis yang sesuai, seperti pengambilan data dari model Product, validasi input, penyimpanan ke database, atau penghapusan data.

    Tabel yang berisi kode status HTTP beserta deskripsi lengkap dari masing-masing kode tersebut:

Kode Status Arti Deskripsi
100 Continue Server telah menerima permintaan awal dan klien harus melanjutkan ke permintaan berikutnya.
101 Switching Protocols Server memahami permintaan klien dan akan beralih ke protokol yang diinginkan.
200 OK Permintaan berhasil. Digunakan untuk respons standar yang berhasil.
201 Created Permintaan berhasil dan sumber daya baru telah dibuat.
204 No Content Server telah berhasil memproses permintaan tetapi tidak ada konten yang dikembalikan.
300 Multiple Choices Ada beberapa pilihan yang tersedia, dan klien harus memilih di antara opsi tersebut.
301 Moved Permanently Sumber daya yang diminta telah dipindahkan secara permanen ke lokasi baru yang disediakan dalam respons.
304 Not Modified Sumber daya belum dimodifikasi sejak permintaan terakhir.
400 Bad Request Server tidak dapat memahami permintaan karena sintaks yang salah atau tidak valid.
401 Unauthorized Klien tidak memiliki otorisasi yang diperlukan untuk sumber daya tersebut.
403 Forbidden Server memahami permintaan tetapi menolak untuk mengizinkan akses ke sumber daya.
404 Not Found Sumber daya yang diminta tidak ditemukan pada server.
500 Internal Server Error Terjadi kesalahan server yang tidak terduga yang menghentikan server dalam memproses permintaan.
503 Service Unavailable Server tidak tersedia saat ini karena overload atau perbaikan.

Kode status HTTP memberikan informasi tentang keberhasilan, kesalahan, atau kondisi khusus dari respons yang diberikan oleh server. Informasi ini sangat penting untuk menentukan bagaimana klien harus merespons terhadap permintaan yang dikirimkan ke server.

  1. Registrasi Route untuk Controller

    • Setelah pembuatan controller, pastikan untuk mendaftarkan rute yang sesuai di dalam file routes/api.php atau routes/web.php tergantung pada kebutuhan aplikasi kita. Berikut contoh penggunaan ProductController dalam definisi rute:
    use App\Http\Controllers\Api\ProductController;
    
    Route::get('/products', [ProductController::class, 'index']);
    Route::get('/products/{id}', [ProductController::class, 'show']);
    Route::post('/products', [ProductController::class, 'store']);
    Route::put('/products/{id}', [ProductController::class, 'update']);
    Route::delete('/products/{id}', [ProductController::class, 'destroy']);
    

Dengan langkah-langkah di atas merupakan contoh membuat controller ProductController menggunakan Artisan di Laravel. Controller tersebut dapat digunakan untuk mengelola operasi CRUD (Create, Read, Update, Delete) terhadap model Product.

Selamat belajar

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Apa itu index file seperti index.html, index.php kegunaannya dan bagaimana membuat custom nya

Index file adalah file yang berfungsi sebagai halaman utama atau tampilan pertama dari sebuah website. File ini memiliki nama default yang bervariasi, tergantung pada jenis server dan konfigurasinya, namun beberapa nama default yang umum digunakan adalah index.html, index.php, index.jsp, atau index.asp.

Membersihkan cache dan dalvik-cache menggunakan link2sd

Mungkin banyak yang menanyakan kenapa internalnya selalu berkurang free space nya. Padahal tidak menginstall applikasi baru. Hanya melakukan aktifitas normal. Dan sampai pada waktunya, internal memory low dan tidak bisa menambah aplikasi baru lagi.  Ada kemungkinan file cache dari sebuah aplikasi atau dalvik yang dibuat oleh OS android sudah  mulai membengkak. Sehingga perlu di bersihkan secara manual supaya tersedia penyimpanan kosong yang banyak. Sebelum mengetahui cara membersihkan cache dan dalvik cache, kita kupas sekilas apa itu cache dan dalvik cache. Cache adalah sebuah data file sementara yang di hasilkan oleh sebuah applikasi guna mempercepat pemrosesan dimasa yang akan datang (Cache Wikipedia) .  Dalvik-cache adalah ruang kosong sementara yang di pake oleh java virtual machine untuk menjalankan aplikasi android (Dalvik Wikipedia) .