m.techreview.click
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development
No Result
View All Result
m.techreview.click
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development
No Result
View All Result
m.techreview.click
No Result
View All Result
Home API

Tutorial Membuat REST API Sederhana dengan Laravel Sanctum

Seraphina by Seraphina
April 25, 2025
in API, Authentication, Backend, Laravel, Tutorial
0
Share on FacebookShare on Twitter

Laravel Sanctum adalah paket otentikasi yang sangat berguna untuk membangun REST API sederhana dengan mudah dan aman. Dalam tutorial ini, kita akan membahas langkah demi langkah cara membuat REST API sederhana dengan Laravel Sanctum. Kita akan mulai dari instalasi Laravel hingga implementasi otentikasi dan pengujian API kita. Mari kita mulai!

1. Persiapan Awal: Instalasi Laravel dan Konfigurasi Dasar

Sebelum kita mulai membuat REST API sederhana dengan Laravel Sanctum, kita perlu memastikan bahwa Laravel sudah terinstal di sistem kita. Jika belum, ikuti langkah-langkah berikut:

  • Instalasi Laravel menggunakan Composer: Buka terminal Anda dan jalankan perintah berikut:

    composer create-project laravel/laravel example-api

    Ganti example-api dengan nama proyek yang Anda inginkan.

  • Masuk ke direktori proyek: Setelah instalasi selesai, masuk ke direktori proyek:

    cd example-api
  • Konfigurasi Database: Edit file .env dan atur konfigurasi database sesuai dengan database yang Anda gunakan (MySQL, PostgreSQL, dll.). Contoh konfigurasi MySQL:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=example_api
    DB_USERNAME=your_username
    DB_PASSWORD=your_password

    Pastikan database example_api sudah dibuat di sistem database Anda.

  • Migrasi Database: Jalankan migrasi untuk membuat tabel-tabel yang dibutuhkan oleh Laravel:

    php artisan migrate

Sekarang, Laravel sudah terinstal dan terkonfigurasi. Kita siap untuk langkah selanjutnya, yaitu menginstal Laravel Sanctum.

2. Instalasi dan Konfigurasi Laravel Sanctum untuk API Authentication

Langkah selanjutnya dalam tutorial membuat REST API sederhana dengan Laravel Sanctum adalah menginstal dan mengkonfigurasi Laravel Sanctum.

Related Post

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

June 26, 2025

Cara Meningkatkan Keamanan Website Laravel dari Serangan Hacker

June 26, 2025

Top 5 Package Laravel yang Mempermudah Pengembangan Website Anda

June 26, 2025

Cara Menggunakan Laravel Eloquent untuk Query Database: Panduan Lengkap

June 25, 2025
  • Instal Laravel Sanctum: Jalankan perintah berikut di terminal:

    composer require laravel/sanctum
  • Publikasi Konfigurasi Sanctum: Publikasikan file konfigurasi Sanctum:

    php artisan vendor:publish --provider="LaravelSanctumSanctumServiceProvider"
  • Migrasi Tabel Sanctum: Jalankan migrasi untuk membuat tabel personal_access_tokens:

    php artisan migrate
  • Konfigurasi User Model: Tambahkan trait HasApiTokens ke model AppModelsUser:

    <?php
    
    namespace AppModels;
    
    use IlluminateContractsAuthMustVerifyEmail;
    use IlluminateDatabaseEloquentFactoriesHasFactory;
    use IlluminateFoundationAuthUser as Authenticatable;
    use IlluminateNotificationsNotifiable;
    use LaravelSanctumHasApiTokens;
    
    class User extends Authenticatable
    {
        use HasApiTokens, HasFactory, Notifiable;
    
        // ...
    }
  • Konfigurasi config/auth.php: Pastikan api guard menggunakan sanctum driver:

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
    
        'api' => [
            'driver' => 'sanctum',
            'provider' => 'users',
        ],
    ],

Dengan langkah-langkah ini, Laravel Sanctum sudah terinstal dan siap digunakan.

3. Membuat Controller dan Model untuk API

Untuk membuat REST API sederhana dengan Laravel Sanctum, kita membutuhkan controller dan model yang akan menangani logika aplikasi kita. Dalam contoh ini, kita akan membuat API untuk mengelola Products.

  • Membuat Model Product: Jalankan perintah berikut untuk membuat model Product dan migrasinya:

    php artisan make:model Product -m
  • Mengedit Migrasi products: Buka file migrasi yang baru dibuat (biasanya di database/migrations) dan tambahkan kolom-kolom yang dibutuhkan, misalnya:

    <?php
    
    use IlluminateDatabaseMigrationsMigration;
    use IlluminateDatabaseSchemaBlueprint;
    use IlluminateSupportFacadesSchema;
    
    class CreateProductsTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('products', function (Blueprint $table) {
                $table->id();
                $table->string('name');
                $table->text('description');
                $table->decimal('price', 8, 2);
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('products');
        }
    }
  • Jalankan Migrasi: Jalankan migrasi untuk membuat tabel products:

    php artisan migrate
  • Membuat Controller ProductController: Jalankan perintah berikut untuk membuat controller ProductController:

    php artisan make:controller ProductController --resource

Controller ini akan menangani operasi CRUD (Create, Read, Update, Delete) untuk produk.

4. Implementasi CRUD Operations pada ProductController

Sekarang kita akan mengimplementasikan operasi CRUD pada ProductController untuk membuat REST API sederhana dengan Laravel Sanctum kita berfungsi.

  • Buka app/Http/Controllers/ProductController.php dan implementasikan method-method berikut:

    <?php
    
    namespace AppHttpControllers;
    
    use AppModelsProduct;
    use IlluminateHttpRequest;
    use IlluminateSupportFacadesValidator;
    
    class ProductController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return IlluminateHttpResponse
         */
        public function index()
        {
            $products = Product::all();
            return response()->json($products);
        }
    
        /**
         * Store a newly created resource in storage.
         *
         * @param  IlluminateHttpRequest  $request
         * @return IlluminateHttpResponse
         */
        public function store(Request $request)
        {
            $validator = Validator::make($request->all(), [
                'name' => 'required|string|max:255',
                'description' => 'required|string',
                'price' => 'required|numeric',
            ]);
    
            if ($validator->fails()) {
                return response()->json($validator->errors(), 400);
            }
    
            $product = Product::create($request->all());
            return response()->json($product, 201);
        }
    
        /**
         * Display the specified resource.
         *
         * @param  AppModelsProduct  $product
         * @return IlluminateHttpResponse
         */
        public function show(Product $product)
        {
            return response()->json($product);
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param  IlluminateHttpRequest  $request
         * @param  AppModelsProduct  $product
         * @return IlluminateHttpResponse
         */
        public function update(Request $request, Product $product)
        {
            $validator = Validator::make($request->all(), [
                'name' => 'string|max:255',
                'description' => 'string',
                'price' => 'numeric',
            ]);
    
            if ($validator->fails()) {
                return response()->json($validator->errors(), 400);
            }
    
            $product->update($request->all());
            return response()->json($product);
        }
    
        /**
         * Remove the specified resource from storage.
         *
         * @param  AppModelsProduct  $product
         * @return IlluminateHttpResponse
         */
        public function destroy(Product $product)
        {
            $product->delete();
            return response()->json(null, 204);
        }
    }

Kode di atas mengimplementasikan:

  • index(): Mengambil semua produk.
  • store(): Menyimpan produk baru.
  • show(): Menampilkan detail produk.
  • update(): Memperbarui produk yang ada.
  • destroy(): Menghapus produk.

5. Konfigurasi Route API dan Perlindungan dengan Sanctum

Setelah controller dan model siap, kita perlu mendefinisikan route API dan melindungi route tersebut dengan Laravel Sanctum agar hanya pengguna yang terautentikasi yang bisa mengaksesnya.

  • Buka routes/api.php dan definisikan route untuk resource products:

    <?php
    
    use IlluminateHttpRequest;
    use IlluminateSupportFacadesRoute;
    use AppHttpControllersProductController;
    
    /*
    |--------------------------------------------------------------------------
    | 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::middleware('auth:sanctum')->get('/user', function (Request $request) {
        return $request->user();
    });
    
    Route::middleware('auth:sanctum')->apiResource('products', ProductController::class);

    Kode di atas:

    • Melindungi route /user dengan middleware auth:sanctum, yang berarti hanya pengguna yang terautentikasi yang bisa mengakses route ini.
    • Membuat route resource untuk products dan melindungi semua route CRUD (index, store, show, update, destroy) dengan middleware auth:sanctum.

6. Registrasi dan Login Pengguna untuk Mendapatkan API Token

Sebelum kita bisa menggunakan API, kita perlu membuat mekanisme registrasi dan login pengguna untuk mendapatkan API token yang akan digunakan untuk otentikasi.

  • Membuat Controller AuthController: Jalankan perintah berikut:

    php artisan make:controller AuthController
  • Buka app/Http/Controllers/AuthController.php dan implementasikan method register dan login:

    <?php
    
    namespace AppHttpControllers;
    
    use AppModelsUser;
    use IlluminateHttpRequest;
    use IlluminateSupportFacadesHash;
    use IlluminateSupportFacadesValidator;
    
    class AuthController extends Controller
    {
        public function register(Request $request)
        {
            $validator = Validator::make($request->all(), [
                'name' => 'required|string|max:255',
                'email' => 'required|string|email|max:255|unique:users',
                'password' => 'required|string|min:8|confirmed',
            ]);
    
            if ($validator->fails()) {
                return response()->json($validator->errors(), 400);
            }
    
            $user = User::create([
                'name' => $request->name,
                'email' => $request->email,
                'password' => Hash::make($request->password),
            ]);
    
            $token = $user->createToken('auth_token')->plainTextToken;
    
            return response()->json([
                'access_token' => $token,
                'token_type' => 'Bearer',
            ]);
        }
    
        public function login(Request $request)
        {
            $validator = Validator::make($request->all(), [
                'email' => 'required|string|email|max:255',
                'password' => 'required|string|min:8',
            ]);
    
            if ($validator->fails()) {
                return response()->json($validator->errors(), 400);
            }
    
            $user = User::where('email', $request->email)->first();
    
            if (!$user || !Hash::check($request->password, $user->password)) {
                return response()->json([
                    'message' => 'Invalid credentials'
                ], 401);
            }
    
            $token = $user->createToken('auth_token')->plainTextToken;
    
            return response()->json([
                'access_token' => $token,
                'token_type' => 'Bearer',
            ]);
        }
    }
  • Definisikan route untuk registrasi dan login di routes/api.php:

    Route::post('/register', [AuthController::class, 'register']);
    Route::post('/login', [AuthController::class, 'login']);

Dengan kode di atas, kita sudah memiliki endpoint /register untuk registrasi pengguna dan /login untuk login pengguna. Kedua endpoint ini akan mengembalikan API token yang akan digunakan untuk otentikasi.

7. Pengujian API dengan Postman atau Insomnia

Langkah terakhir dalam tutorial membuat REST API sederhana dengan Laravel Sanctum adalah menguji API yang sudah kita buat. Kita akan menggunakan Postman atau Insomnia untuk mengirimkan request ke API kita.

  • Registrasi Pengguna: Kirimkan request POST ke endpoint /register dengan data:

    {
        "name": "John Doe",
        "email": "[email protected]",
        "password": "password",
        "password_confirmation": "password"
    }

    Anda akan menerima response berupa API token.

  • Login Pengguna: Kirimkan request POST ke endpoint /login dengan data:

    {
        "email": "[email protected]",
        "password": "password"
    }

    Anda akan menerima response berupa API token.

  • Mengakses Endpoint yang Dilindungi: Untuk mengakses endpoint yang dilindungi (misalnya, /api/products), tambahkan header Authorization dengan nilai Bearer <API_TOKEN>, di mana <API_TOKEN> adalah token yang Anda dapatkan dari proses registrasi atau login.

    Contoh:

    Authorization: Bearer 1|abcdefghijklmnopqrstuvwxyz1234567890

    Sekarang Anda bisa mengirimkan request ke endpoint /api/products dan melihat daftar produk, membuat produk baru, mengedit produk, atau menghapus produk.

8. Optimasi dan Keamanan Tambahan untuk REST API Anda

Setelah Anda berhasil membuat REST API sederhana dengan Laravel Sanctum, ada beberapa langkah optimasi dan keamanan tambahan yang bisa Anda terapkan:

  • Rate Limiting: Terapkan rate limiting untuk mencegah penyalahgunaan API. Anda bisa menggunakan middleware throttle di Laravel.
  • Validasi Input yang Lebih Ketat: Pastikan Anda memvalidasi semua input yang masuk ke API Anda untuk mencegah serangan injection atau data yang tidak valid.
  • HTTPS: Pastikan API Anda menggunakan HTTPS untuk mengenkripsi komunikasi antara client dan server.
  • CORS: Konfigurasi CORS (Cross-Origin Resource Sharing) untuk mengontrol domain mana yang diizinkan mengakses API Anda.
  • Logging: Aktifkan logging untuk memantau aktivitas API dan mendeteksi potensi masalah atau serangan.
  • Penggunaan DTO (Data Transfer Object): Implementasikan DTO untuk standarisasi data yang ditransfer antara layer aplikasi. Ini membuat kode lebih mudah dibaca, dipelihara, dan diuji.
  • Paginasi: Implementasikan paginasi untuk response API yang besar. Ini akan meningkatkan performa dan pengalaman pengguna. Gunakan method paginate() pada Eloquent.
  • Caching: Gunakan caching untuk menyimpan data yang sering diakses. Ini akan mengurangi beban database dan mempercepat response API.

9. Dokumentasi API Menggunakan Swagger/OpenAPI

Dokumentasi API sangat penting agar developer lain bisa memahami cara menggunakan API Anda dengan benar. Salah satu cara terbaik untuk mendokumentasikan API adalah dengan menggunakan Swagger/OpenAPI.

  • Instal Package Swagger: Gunakan package darkaonline/l5-swagger untuk mengintegrasikan Swagger ke dalam proyek Laravel Anda.

    composer require darkaonline/l5-swagger
  • Konfigurasi L5-Swagger: Publikasikan konfigurasi:

    php artisan vendor:publish --provider "L5SwaggerL5SwaggerServiceProvider"
  • Tambahkan Annotations: Tambahkan annotations Swagger ke controller dan model Anda untuk mendeskripsikan endpoint, request, dan response API. Contoh:

    /**
     * @OAGet(
     *     path="/api/products",
     *     summary="Get list of products",
     *     @OAResponse(response="200", description="Success")
     * )
     */
    public function index()
    {
        // ...
    }
  • Generate Dokumentasi Swagger: Jalankan perintah berikut untuk menghasilkan dokumentasi Swagger:

    php artisan l5-swagger:generate
  • Akses Dokumentasi: Buka /api/documentation di browser Anda untuk melihat dokumentasi Swagger API Anda.

Dengan dokumentasi Swagger, developer lain bisa dengan mudah memahami dan menggunakan API Anda.

10. Kesimpulan: Membangun API yang Kuat dan Terpercaya

Dalam tutorial membuat REST API sederhana dengan Laravel Sanctum ini, kita telah membahas langkah demi langkah cara membangun API yang sederhana, aman, dan mudah digunakan. Kita telah membahas instalasi Laravel, konfigurasi Sanctum, pembuatan controller dan model, implementasi operasi CRUD, perlindungan route dengan Sanctum, dan pengujian API. Kita juga telah membahas optimasi dan keamanan tambahan, serta dokumentasi API menggunakan Swagger.

Dengan mengikuti tutorial ini, Anda seharusnya sudah memiliki dasar yang kuat untuk membuat REST API sederhana dengan Laravel Sanctum. Anda bisa mengembangkan API ini lebih lanjut dengan menambahkan fitur-fitur lain, seperti autentikasi OAuth, notifikasi push, atau integrasi dengan layanan pihak ketiga. Selamat mencoba dan semoga berhasil!

Tags: APIAPI DevelopmentAuthenticationLaravelLaravel SanctumPHPREST APISanctumSimple APItutorial
Seraphina

Seraphina

Related Posts

API

Membuat API Authentication dengan Laravel Sanctum: Panduan Lengkap

by Jasper
June 26, 2025
Hacker

Cara Meningkatkan Keamanan Website Laravel dari Serangan Hacker

by Willow
June 26, 2025
Development

Top 5 Package Laravel yang Mempermudah Pengembangan Website Anda

by Seraphina
June 26, 2025
Next Post

Hosting Murah untuk Website Toko Online Indonesia: Solusi Hemat dan Efektif

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended

Desain Website Modern dan Menarik: Tingkatkan Konversi dengan Visual yang Memukau

April 9, 2025

Lowongan Kerja Web Development Fresh Graduate: Tips Mendapatkan Pekerjaan Impian

June 9, 2025

Tutorial Laravel Dasar untuk Pemula Bahasa Indonesia: Mulai Membangun Aplikasi Web

June 9, 2025

Generator AI untuk Membuat Logo Website dengan Mudah

June 27, 2025

Tools AI Gratis untuk Meningkatkan Produktivitas Konten Marketing Anda

June 27, 2025

Cara Membuat Artikel SEO-Friendly dengan Bantuan AI

June 26, 2025

Aplikasi AI Terbaik untuk Mengedit Foto Produk Online: Tingkatkan Penjualanmu Sekarang!

June 26, 2025

m.techreview.click

Our media platform offers reliable news and insightful articles. Stay informed with our comprehensive coverage and in-depth analysis on various topics.
Read more »

Recent Posts

  • Generator AI untuk Membuat Logo Website dengan Mudah
  • Tools AI Gratis untuk Meningkatkan Produktivitas Konten Marketing Anda
  • Cara Membuat Artikel SEO-Friendly dengan Bantuan AI

Categories

  • 2024
  • Agency
  • AI
  • Akses
  • Aktif
  • Akuntansi
  • Algoritma
  • Analisis
  • Anggaran
  • Antarmuka
  • Antisipasi
  • API
  • Aplikasi
  • Artikel
  • Asynchronous
  • Audio
  • Authentication
  • Authorization
  • Backend
  • Background
  • Backup
  • Bahasa
  • Bandwidth
  • Bantuan
  • Belajar
  • Bergabung
  • Biaya
  • Bisnis
  • Blogger
  • Bootstrap
  • Branding
  • Bukti
  • Cepat
  • Chatbot
  • Cloud
  • Coding
  • Company
  • Contoh
  • cPanel
  • CRM
  • CSS
  • Custom
  • Dampak
  • Dasar
  • Data
  • Database
  • Deployment
  • Desain
  • Design
  • Detail
  • Developer
  • Development
  • Digital
  • Diskusi
  • Dokumentasi
  • Domain
  • Download
  • Dukungan
  • E-commerce
  • Efektif
  • Efisiensi
  • Eloquent
  • Email
  • Engine
  • Enterprise
  • Error
  • Error generating categories
  • Estimasi
  • Etika
  • Event
  • Faktor
  • Fitur
  • Fleksibel
  • Fortify
  • Foto
  • Framework
  • Freelancer
  • Fresh
  • Frontend
  • Fungsi
  • Gambar
  • Garansi
  • Gratis
  • Hacker
  • Harga
  • Hemat
  • Here are 5 categories derived from the article title "Hosting dengan Dukungan Pelanggan 24 Jam: Bantuan Kapanpun Dibutuhkan": Hosting
  • Here are 5 categories derived from the article title "Hosting Domain Murah Indonesia dengan Proteksi DDoS Gratis: Solusi Terbaik untuk Website Anda": Hosting
  • Here are 5 categories derived from the provided list and the article titles: Company
  • Hosting
  • HTML
  • Hybrid
  • Implementasi
  • Indonesia
  • Inovasi
  • Inspirasi
  • Instalasi
  • Integrasi
  • Investasi
  • Jakarta
  • Jasa
  • JavaScript
  • Kantor
  • Kapasitas
  • Karir
  • Karyawan
  • Keamanan
  • Keandalan
  • Kebutuhan
  • Kecepatan
  • Kecil
  • Kehidupan
  • Kemampuan
  • Kemudahan
  • Kerja
  • Kesalahan
  • Kesehatan
  • Keterampilan
  • Keuntungan
  • Keyword
  • Kode
  • Kompetensi
  • Komponen
  • Komunikasi
  • Komunitas
  • Konsep
  • Konten
  • Konversi
  • Kreativitas
  • Kredibilitas
  • Kualitas
  • Langkah
  • Laravel
  • Latihan
  • Layanan
  • Library
  • Listener
  • Livewire
  • Logika
  • Logo
  • Lokal
  • Loyalitas
  • Machine Learning
  • Mahasiswa
  • Mahir
  • Maintenance
  • Manfaat
  • Manufaktur
  • Marketing
  • Masa Depan
  • Masyarakat
  • Medis
  • Memilih
  • Meningkatkan
  • Middleware
  • Migration
  • Mobile
  • Modern
  • Murah
  • MySQL
  • Observer
  • Online
  • Operasional
  • Optimasi
  • ORM
  • Otentikasi
  • Otomatis
  • Package
  • Panduan
  • Pasar
  • Pekerjaan
  • Pelajaran
  • Pelanggan
  • Pelatihan
  • Peluang
  • Pemahaman
  • Pemanfaatan
  • Pemasaran
  • Pemilihan
  • Pemrograman
  • Pemula
  • Penawaran
  • Pengalaman
  • Pengenalan
  • Pengguna
  • Penggunaan
  • Pengujian
  • Penipuan
  • Penjualan
  • Penulisan
  • Peran
  • Perbandingan
  • Perbedaan
  • Performa
  • Performance
  • Peringkat
  • Pertimbangan
  • Pertumbuhan
  • Perusahaan
  • PHP
  • Pilihan
  • Platform
  • Policy
  • Portofolio
  • Praktik
  • Prediksi
  • Pribadi
  • Process
  • Produktivitas
  • Profesional
  • Profil
  • Profile
  • Project
  • Proyek
  • Python
  • Queue
  • Real-Time
  • Redis
  • Referensi
  • Rekomendasi
  • Relasi
  • Remote
  • Request
  • Responsive
  • Retail
  • Retensi
  • Review
  • Riset
  • Ritel
  • Roadmap
  • Saham
  • Sanctum
  • Sederhana
  • Seeding
  • SEO
  • Sertifikat
  • Server
  • Sharing
  • Sinkronisasi
  • Sistem
  • Skalabilitas
  • Skill
  • Software
  • Solusi
  • Space
  • SSL
  • Startup
  • Strategi
  • Struktur
  • Studi Kasus
  • Sukses
  • Tanggung Jawab
  • Tantangan
  • Teknis
  • Teknologi
  • Teks
  • Template
  • Tenaga Kerja
  • Terbaik
  • Terjangkau
  • Terjemahan
  • Terlengkap
  • Terpercaya
  • Tim
  • Tips
  • Toko
  • Tools
  • Training
  • Transkripsi
  • Tren
  • Tugas
  • Tutorial
  • Uji Coba
  • UMKM
  • Umum
  • Unlimited
  • Uptime
  • URL
  • User Experience
  • Video
  • Visual
  • VPS
  • Wajah
  • Web
  • Web Development
  • Website
  • Windows
  • WordPress

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 m.techreview.click.

No Result
View All Result
  • Website
  • Indonesia
  • Laravel
  • Hosting
  • AI
  • Development

© 2024 m.techreview.click.