Skip to main content

Membuat API Server dengan Laravel Passport

Halo sobat, senang sekali bisa berbagi catatan di Blog ini. kali ini saya akan membagikan langkah-langkah untuk membuat API Server menggunakan Laravel Passport.

Kalau kalian belum tahu, API atau Application Programming Interface adalah program yang berfungsi untuk menjembatani dua atau lebih aplikasi berbeda. Pada kasus yang sedang saya kerjakan ini API berfungsi untuk menangani tugas dalam pengolahan database dan memberikan hasil berupa data sesuai dengan permintaan. Jadi API server ini bertugas untuk melayani request dari Aplikasi Client. Untuk informasi lebih lengkap silahkan baca di penjelasan Application Programming Interface.

Untuk membuat API server ini pilihan saya jatuh pada Laravel Passport, mengingat platform PHP ini sangat populer dan mudah dipelajari. Tutorialnya juga dengan mudah bisa kita dapatkan. Untuk security Laravel Passport menggunakan teknologi OAuth2.

Langkah-Langkah Membuat API Server dengan Laravel Passport

Dibawah ini adalah langkah-langkah yang harus kita lakukan untuk membuat API server. silahkan ikuti setiap tahapnya, jangan di lompati.

1. Install Composer

Pertama kita harus memastikan di komputer kita sudah terinstall Composer yang akan kita gunakan untuk membuat project Laravel dan juga menambahkan modul Passport. untuk memeriksa Composer sudah terinstall atau tidak, silahkan buka Terminal dan jalankan perintah compser. Apabila muncul seperti gambar di bawah ini, berarti Composer sudah terinstall.
Apabila belum muncul seperti gambar di atas, silahkan download Composer dulu.

2. Membuat Project Laravel

Selanjutnya kita akan membuat project Laravel. apabila kalian memakai Xamp seperti saya, maka buka command promt atau terminah dan masuk ke folder htdocs. Saya akan membuat projectdengan nama ApiServer. untuk itu ketikan perintah berikut:
composer create-project --prefer-dist laravel/laravel ApiServer
Perintah ini akan membuat folder ApiServer di dalam folder htdocs dan mengunduh file laravel ke dalamnya. silahkan tunggu sampai proses download selesai.

3. Setting Database Connection

Selanjutnya silahkan buka project Laravel yang baru kita buat menggunakan Text Editor Favorit kalian, lalu buka file .env dan edit seperti code berikut:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=namadatabaseku
DB_USERNAME=usernameku
DB_PASSWORD=passwordku

Contoh di atas adalah setelan untuk koneksi ke mysql. apabila kita ingin menggunakan database SQL Server silahkan lihat cara membaca database sql server dengan php.

4. Membuat Tabel Users

Untuk membuat tabel users kita tidak perlu melakukannya secara manual karena Laravel sudah menyediakan perintah khusus untuk itu. silahkan jalankan perintah berikut di Terminal

php artisan:migrate

Apabila muncul pesan error seperti dibwah ini
Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

Kemungkinan ada masalah pada versi mysql yang kita install seperti yang di jelaskan di halaman ini.

Solusi:
Untuk mengatasi masalah ini silahkan buka file app/provider/AppServiceProvider.php dan tambahkan code use Illuminate\Support\Facades\Schema; sebelum class AppServiceProvider dan tambahkan code Schema::defaultStringLength(191); di dalam function boot(). Sehingga codenya akan seperti ini:
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use Laravel\Passport\Passport;
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
}

Setelah itu, hapus terlebih dahulu table users, baru jalankan ulang perintah
php artisan:migrate


5. Generated file Auth

Selanjutnya kita akan membuat file-file yang di perlukan untuk proses otorisasi user. untuk itu silahkan jalankan perintah
php artisan make:auth

5. Install Laravel Passport

Setup awal untuk project Laravel sudah selesai. karena kita akan membuat API server dengan Laravel Passport, maka selanjutnya kita akan install modul Passport ke dalam Project. untuk itu silahkan jalnkan perintah berikut di Terminal
composer require laravel/passport

6. Generate Tabel yang diperlukan oleh Passport

 langkah selanjutnya adalah membuat tabel-tabel yang di perlukan oleh Passport. kita tidak perlu membuatnya manual, karena Laravel sudah menyediakan fungsi untuk itu. Silahkan jalankan perintah berikut di Terminal:
php artisan:migrate
Perintah itu akan membuat beberapa tabel baru.Bila kita lihat database sekarang akan ada beberapa tabel baru dengan awalan oauth.

7. Generated Client Secret Key

Setelah semua tabel yang diperlukan Passport siap, selanjutnya kita akan membuat secret key yang di perlukan dalam proses otorisasi akses API. untuk itu silahkan jalankan perintah berikut di Terminal.
php artisan passport:install
Catat secret key yang muncul, atau kalau lupa, kita bisa lihat secret key tadi di tabel oauth_clients

8. Edit File User.php

Langkah selanjutnya adalah merubah file app\User.php. Tambahkan use Laravel\Passport\HasApiTokens;  sebelum class User. Dan  use HasApiTokens, Notifiable; di dalam class User, sehingga file User.php tampak seperti code dibawah ini:
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

9. Edit file AppServiceProvide.php

Kita juga perlu melakukan modifikasi pada file app\Providers\AppServiceProvider. di sini kita perlu menambahkan code Passport::routes(); di dalam function boot(). sehingga code akan seperti berikut
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use Laravel\Passport\Passport;
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
        Passport::routes();
    }
}

10. Edit file auth.php

Yang terakhir, kita harus ubah file config\auth.php . di sini kita akan mengganti token menjadi passport seperti code berikut ini:
 'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
            'hash' => false,
        ],
    ],


Sampai disini proses install Laravel Passport sudah selesai kita lakukan. Dan untuk melakukan test login pada Api server kita ini, sebelumnya kita harus membuat user. Proses pembuatan user bisa di lakukan dengan seeding otomatis dengan template, atau seeding dengan membuat sendiri data user. untuk membuat sendiri user, silahkan lihat Cara Seeding User laravel Passport.

Baik, sekian dulu catatan saya kali ini tentang cara membuat API server dengan Laravel Passport dengan teknologi OAuth2. Silahkan di share apabila catatan ini bermanfaat.


RELATED ARTIKEL

Comments

Popular posts from this blog

Urutan Tata Cara Odalan di Sanggah

Cara Membuat Banten Peras

Cara mengaktifkan voice input Xiaomi redmi note 3.