Laravel Api Resources MemperCepat Manipulasi Response Json

Laravel Resources Membantu Kita untuk Mempermudah dalam mengerjakan Backend Api menggunakan Laravel, Beberapa Tips untuk anda yang menggunakan Laravel dalam Membangun Api bisa juga menggunakan ini, kalo menurut saya lebih mudah dan flexible menggunakan ini dibanding Laravel Fractal / Transformer, tetapi terkadang juga memang ada beberapa yang lebih baik menggunakan transformer.

Kali ini saya tidak akan membahas Laravel Transformer atau Laravel Fractal melainkan menggunakan Laravel Api Resources mari kita mulai sekarang.

Disini kita akan membuat table dan Crud Methodnya menggunakan Laravel Api Resources :

php artisan make:migration create_posts_table

Dan Ubah File Tersebut sesuai dengan kebutuhan anda di isi table posts tersebut :

...
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('slug')->unique();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
...

Lalu kita migrate table posts ke database :

php artisan migrate

dan kita buat juga Controller serta Model dengan menggunakan perintah :

php artisan make:model Post -c

Di file Model kita akan mengubahnya seperti ini :

    protected $table = 'posts';

// Silahkan tambahkan field lain yang harus diubah
    protected $fillable = ['title', 'slug'];

Perintah diatas akan membuat model Post dan PostController dan sekarang kita buat juga untuk Api Resources nya di Laravel dengan menggunakan perintah :

php artisan make:resource PostResource

dan akan menghasilkan file PostResource

Sekarang kita akan edit file PostResource nya

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class PostResource extends JsonResource
{

    public function toArray($request)
    {
        // Akan Kita ubah bagian ini
        return parent::toArray($request);
    }
}

Ubah Menjadi

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;
use Carbon\Carbon;

class PostResource extends JsonResource
{

    public function toArray($request)
    {
        // Setelah Diubah, Disini saya akan menampilkan Title, Id, Slug dan Created at Column di database
        return [
            'id' => $this->id,
            'title' => $this->title
            'slug' => $this->slug
            'created_at' => Carbon::parse($this->created_at)->format('d-m-Y')

        ];
    }
}

Nah Sekarang kita akan Ubah file PostController yang tadinya seperti ini :

<?php

namespace App\Http\Controllers;

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

class PostController extends Controller
{
    public function index()
    {
        $blog = Post::get();

        return PostResource::collection($blog);
    }

Dan hasil Response dari Api yang telah kita buat akan menghasilkan Json Format dan siap dikonsumsi oleh Frontend.

Demikian Tips tentang Laravel kali ini ..

Happy Coding...