Tutorial Restful API Laravel 11 #4 : Menampilkan Data dari Database


Tutorial Restful API Laravel 11 #4 : Menampilkan Data dari Database

Halo teman-teman semuanya, di artikel sebelumnya kita telah belajar membuat API Resources di dalam Laravel 11 dan pada kesempatan kali ini kita semua akan belajar bagaimana cara menampilkan list data posts dari database di dalam Laravel 11 dengan format JSON.

Langkah 1 - Membuat Controller Post

Sekarang, silahkan teman-teman 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 file baru yang berada di dalam folder app/Http/Controllers/Api/PostController.php. Silahkan buka file tersebut, kemudian ubah semua kode-nya menjadi seperti berikut ini.

app/Http/Controllers/Api/PostController.php

<?php

namespace App\Http\Controllers\Api;

//import model Post
use App\Models\Post;

use App\Http\Controllers\Controller;

//import resource PostResource
use App\Http\Resources\PostResource;

class PostController extends Controller
{    
    /**
     * index
     *
     * @return void
     */
    public function index()
    {
        //get all 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 import Model Post terlebih dahulu.

//import model Post
use App\Models\Post;

Setelah itu, kita import juga API Resource yang sudah kita buat sebelumnya, yaitu PostResource.

//import resource PostResource
use App\Http\Resources\PostResource;

Di dalam class PostController kita menambahkan method baru dengan nama index.

public function index()
{

	//...
	
}

Di dalam method tersebut, kita melakukan get data dari database melalui Model Post.

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

Setelah itu, kita tinggal parsing variable $posts di atas ke dalam PostResource.

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

Langkah 2 - Membuat Route Rest API

Sejak Laravel 11 rilis, route api sudah tidak tersedia secara default saat proses installasi. Tapi jangan kawatir, karena kita tinggal mempublishnya.

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

php artisan install:api

Jika perintah di atas dijalankan, maka akan secara otomatis mengunduh library yang bernama sanctum, tapi tidak akan menggunakan library tersebut untuk saat ini. Dan sekarang route untuk Rest API sudah tersedia di dalam folder routes/api.php.

Sekarang, silahkan teman-teman buka file routes/api.php, kemudian ubah kode-nya menjadi seperti berikut ini.

routes/api.php

<?php

use Illuminate\Auth\Middleware\Authenticate;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/user', function (Request $request) {
    return $request->user();
})->middleware(Authenticate::using('sanctum'));

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

Di atas, kita menambahkan route baru dengan jenis apiResource dan memiliki path /posts. Untuk memastikan route tersebut berhasil ditambahkan, teman-teman bisa menjalankan perintah berikut ini di dalam terminal/CMD.

php artisan route:list

Langkah 3 - Uji Coba Rest API

UNDUH POSTMAN : https://www.postman.com/downloads/

Sekarang, silahkan teman-teman 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 teman-teman akan mendapatkan hasil 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
    }
}

Di atas, kita masih belum menampilkan data apapun, karena memang kita belum memiliki data di dalam database. Dan yang ditampilkan adalah array kosong.

data: []

Kesimpulan

Pada artikel ini, kita semua telah belajar bagaimana cara menampilkan data dalam format JSON di Laravel 11, adapaun yang telah kita pelajari adalah membuat controller, menginstall route api, menambahkan route api resource, dan uji coba Rest API.

Pada artikel berikutnya, kita semua akan belajar bagaimana cara melakukan proses insert data ke dalam database menggunakan Rest API di Laravel 11.

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