Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Laravel Nov 3, 2022

Laravel Rest API

Latar Belakang

Artikel ini membahas tentang bagaimana cara membuat controller, route serta menampilkan data dari database menggunakan Rest API di Laravel. Dan kita akan menggunakan API Resource untuk menampilkan format JSON-nya.

Silahkan kamu download aplikasi Postman terlebih dahulu. Postman akan kita gunakan untuk melakukan proses uji coba Rest API yang kita buat nantinya.

Configurasi .env file

Sebelum mengkonfigurasi file .env hidupkan terlebih dahulu mysql pada GUI xampp kamu, kemudian buka mysql database kamu dengan phpMyAdmin atau dengan navicat terserah saja yang kamu rasa nyaman menggunakannya.

Setelah itu kita buat database dengan nama Laravel, jika sudah selesai sekarang kita sudah siap mengkonfigurasi file .env.

  • Pertama buka file .env kamu, dalam kasus ini saya menggunakan xampp dengan database mysql. Saya harap kamu juga menggunakan yang sama agar nantinya tidak ada eror yang tidak saya ketahui kedepannya.
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API
  • Setelah file .env terbuka silahkan kamu sesuaikan configurasinya sesuai dengan username dan password kamu.

Membuat migration

Migration merupakan salah satu fitur Laravel yang berfungsi seperti version control untuk database. Atau dalam kata lain kita bisa mengelola dan modifikasi skema basis data melalui migration ini. ketikan :

php artisan make:migration create_post_table
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Setelah itu akan terbuat satu file baru di  dalam folder app\database\migrations\thn_bln_tgl_create_post_table

  • Buka file tersebut kemudian ikuti Langkah ini :
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Pada function up  kita menulis struktur table yang akan kita buat pada adatabase Laravel kita. Dalam table post berisi id, title, image, content, dan timestamp.

Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title', 200);
            $table->string('image', 150);
            $table->longText('content');
            $table->timestamps();
        });

Menjalankan Migration

Setelah kita membuat struktur table dari file migration kita , sekarang kita tinggal menjalankannya dengan mengetikan  : php artisan migrate

php artisan migrate
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Maka akan tampil seperti ini pada table database Laravel kita

Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Membuat Model POST

Untuk membuat model di Laravel sangat mudah kamu hanya mengetikan :

Php artisan make:model post
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Maka akan terbuat 1 file baru dengan nama post pada folder App\models\post.php

Membuat Controller

Silahkan ketikan perintah berikut ini :

php artisan make:controller Api/PostController

setelah perintah di atas berhasil kamu jalankan, maka kamu akan melihat 1 file controller baru dengan nama PostController.php di dalam folder app/Http/Controllers/Api.

kemudian buka file tersebut dan ikuti Langkah berikut ini :

<?php

namespace App\Http\Controllers\Api;

use App\Models\Post;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

use App\Http\Resources\PostResource;

use Illuminate\Support\Facades\Validator;

class PostController extends Controller
{
    public function index()
    {
        //get posts
        $posts = Post::latest()->paginate(5);

        //return collection of posts as a resource
        return new PostResource(true, 'List Data Posts', $posts);
    }

}
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Penjelasan :

  • use App\Models\Post;
    melakukan import Model Post untuk mendapatkan data dari database.
  • use App\Http\Resources\PostResource;
    import PostResource yang kita buat pada artikel Create API Resources Laravel 9. untuk merubah data menjadi format JSON.
  • $posts = Post::latest()->paginate(5);
    mengurutkan data yang akan ditampilkan menggunakan method latest dan kita batasi data yang ditampilkan per-halaman menggunakan method paginate.
  • return new PostResource(true, 'List Data Posts', $posts);
    Berisi 3 parameter,
  • parameter pertama bernilai true, yang mendefinisikan status success dari response-nya.
  • parameter kedua adalah List Data Posts, yang merupakan pesan dari response-nya.
  • terakhir adalah $posts, merupakan data yang diambil dari model dan akan di transformasi menjadi collection.

Membuat Route Api Resource

Setelah sebelumnya kita berhasil membuat controller, sekarang kita lanjutkan menambahkan route-nya. Buka file routes/api.php, kemudian ikuti Langkah-langkah berikut ini :

Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Perubahan di atas, kita menambahkan route baru dengan jenis apiResource. Dengan menggunakan route tersebut, secara otomatis Laravel akan membuatkan beberapa method route, seperti index, store, show, update dan destroy.

Untuk memastikan route telah berhasil ditambahkan, jalankan perintah berikut ini :

php artisan route:list
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

Uji Coba Rest API

  • Buka Postman
    kita akan lakukan uji coba Rest API kita menggunakan aplikasi Postman, Kemudian Klik New > HTTP Request, lalu masukan URL http://localhost:8000/api/posts.

    Note : pastikan kamu sudah menghidupkan local server dan juga mysql kamu dengan mengetikan php artisan server untuk mengaktifkan local server, running mysql dengan mengklik start pada xampp kamu.
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API
Membuat Controller & Route untuk menampilkan data dari database mysql, laravel rest API

kamu perhatikan, dibagian "data": [], masih menampilkan array kosong. Itu dikarenakan kita belum memiliki data apapun di dalam table posts .