Tutorial Restful API di Laravel 9 #3 : Menampilkan Data dari Database


Tutorial Restful API di Laravel 9 #3 : Menampilkan Data dari Database

Halo teman-teman semuanya, di artikel kali ini kita akan belajar bagaimana cara menampilkan data dari database menggunakan Rest API di Laravel. Dan kita akan menggunakan API Resource untuk menampilkan format JSON-nya.

Sebelum itu, silahkan teman-teman download aplikasi Postman terlebih dahulu. Aplikasi ini akan kita gunakan untuk melakukan proses uji coba Rest API yang kita buat nantinya.

Link Unduk Postman : https://www.postman.com/downloads/

Langkah 1 - Membuat Controller

Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.

php artisan make:controller Api/PostController

Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file controller baru dengan nama PostController.php yang berada di dalam folder app/Http/Controllers/Api.

Silahkan buka file tersebut, kemudian ubah kode-nya menjadi seperti berikut ini :

<?php

namespace App\Http\Controllers\Api;

use App\Models\Post;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\PostResource;

class PostController extends Controller
{    
    /**
     * index
     *
     * @return void
     */
    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);
    }
}

Dari perubahan kode di atas, pertama kita melakukan import Model Post terlebih dahulu. Karena kita akan menggunakan model ini untuk mendapatkan data dari database.

use App\Models\Post;

Setelah itu, kita juga import PostResource yang sudah kita buat sebelumnya. Resource inilah yang nanti kita gunakan untuk mengubah data menjadi format JSON.

use App\Http\Resources\PostResource;

Dan di dalam class PostController, kita menambahkan 1 method baru dengan nama index. Di dalam method tersebut pertama kita melakukan get data posts dengan Model.

//get posts
$posts = Post::latest()->paginate(5);

DI atas, kita urutkan data yang akan ditampilkan menggunakan method latest dan kita batasi data yang ditampilkan per-halaman menggunakan method paginate.

Setelah itu, kita return menggunakan PostResource dengan mengirimkan 3 paramater.

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

Untuk parameter pertama, kita berikan nilai true, yang mana merupakan status success dari response-nya. Kemudian untuk parameter kedua adalah List Data Posts, yang merupakan message atau pesan dari response-nya. Dan terakhir adalah $posts, yang merupakan data ysng diambil dari model dan akan di transformasi menjadi collection.

Langkah 2 - Membuat Route Api Resource

Setelah berhasil membuat controller, sekarang kita lanjutkan menambahkan route-nya. Silahkan buka file routes/api.php, kemudian ubah semua kode-nya menjadi seperti berikut ini :

<?php

use Illuminate\Support\Facades\Route;

//posts
Route::apiResource('/posts', App\Http\Controllers\Api\PostController::class);

Dari perubahan kode di atas, kita menambahkan route baru dengan jenis apiResource. Dengan menggunakan route tersebut, kita akan otomatis dibuatkan beberapa method route, seperti index, store, show, update dan destroy.

Untuk memastikan route telah berhasil ditambahkan, silahkan jalankan perintah berikut ini di dalam termina/CMD :

php artisan route:list

Jika berhasil, maka akan menampilkan hasil seperti berikut ini :

Langkah 3 - Uji Coba Rest API

Sekarang kita akan lakukan uji coba Rest API kita menggunakan aplikasi Postman. Silahkan buka aplikasi Postman kemudian masukkan URL berikut ini http://localhost:8000/api/posts dan untuk method-nya silahkan pilih GET.

Jika sudah, silahkan klik Send dan jika berhasil maka akan menampilkan response data dengan pagination. Kurang lebih seperti berikut ini :

{
    "success": true,
    "message": "List Data Posts",
    "data": {
        "current_page": 1,
        "data": [],
        "first_page_url": "http://localhost:8000/api/posts?page=1",
        "from": null,
        "last_page": 1,
        "last_page_url": "http://localhost:8000/api/posts?page=1",
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "http://localhost:8000/api/posts?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "next_page_url": null,
        "path": "http://localhost:8000/api/posts",
        "per_page": 5,
        "prev_page_url": null,
        "to": null,
        "total": 0
    }
}

Jika kita perhatikan, dibagian "data": [], masih menampilkan array kosong. Yups itu karena kita belum memiliki data apapun di dalam table posts. Di artikel selanjutnya, kita akan belajar bagaimana cara melakukan proses insert menggunakan Rest API di Laravel.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami