Blog FQSoft

Just Simple Code Documentation

PHP Laravel

RESTful API Dengan Controller di Laravel

Faiq Himmah 23 December 2023
[ Gambar Post ]

Membuat RESTful API via controller adalah cara yang paling simple, mudah dan cepat. Karena semua proses pengambilan data dan converting Objek JSON maupun Array JSON dilakukan di satu tempat yaitu controller

Namun cara ini bukan best practice dari dokumentasi laravel saat membuat RESTful API. Karena saat adanya pengembangan yang kearah lebih kompleks ataupun perubahan. Maka akan banyak file yang perlu disesuiakan.

Oleh karenanya jika dirasa memang RESTful API yang dibuat bersifat sederhana dan bisa diperkirakan tidak dikembangkan ke arah yang lebih kompleks. Maka cara ini lebih efektif

Pertama-tama kita akan buat controller API . dengan mejalankan perintah dibawah ini :

php artisan make:controller PegawaiController --api 

/* jika ingin meletakkan di subfolder "API" perintahnya adalah */
php artisan make:controller API/PegawaiController --api 

Perintah diatas akan membuat file PegawaiController.php di folder app/Http/Controllers . Secara default file tersebut berisi function :

  • index()
  • store(Request $request)
  • show(string $id)
  • update(Request $request, string $id)
  • destroy(string $id)

Sebagai contoh kita akan mengisi function dari index untuk menampilkan seluruh pegawai

public function index()
{
    $model = Pegawai::all();
    return response()->json([
        'status' => '200',
        'data' => $model,
    ]);
}

Kode diatas akan menghasilkan data yang sama dengan metode Resource Collection yaitu berupa Array JSON.

Untuk contoh kode di bawah ini akan menghasilkan data yang sama dengan metode Resource yaitu berupa Object JSON

public function index()
{
    $model = Pegawai::find(1);
    return response()->json([
        'status' => '200',
        'data' => $model,
    ]);
}

Semoga Bermanfaat dan Terima Kasih...


Tambahan

Bagaimana cara menambahkan link pagination ?

Caranya dengan memanggil function paginate()

public function index()
{
    $model = Pegawai::paginate(5);
    return response()->json([
        'status' => '200',
        'data' => $model,
    ]);
}

Jika kode diatas dijalankan akan menghasilkan data dibawah ini

  {
    "data": [
        {
          "id": 1,
          "name": "Ahmad",
          "email": "ahmad@mail.com",
          "divisi" : {
            "id": 5,
            "name": "Quality Control"
          }
        },
        {
          "id": 2,
          "name": "Yusuf",
          "email": "yusuf@mail.com",
          "divisi" : {
            "id": 4,
            "name": "Development"
          }
        },
        {
          "id": 1,
          "name": "Sulaiman",
          "email": "sulaiman@mail.com",
          "divisi" : {
            "id": 3,
            "name": "Marketing"
          }
        }
    ],
    "links": {
        "first": "http://127.0.0.1:8000/api/kotak-semua?page=1",
        "last": "http://127.0.0.1:8000/api/kotak-semua?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "http://127.0.0.1:8000/api/pegawai?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "http://127.0.0.1:8000/api/pegawai",
        "per_page": 5,
        "to": 4,
        "total": 4
    }
}

dari output diatas terlihat ada dua key baru selain key ‘data’ yaitu :

  • links : berisi link pagination
  • meta : berisi informasi pagination
laravel Restful api