skip to Main Content
Membuat RESTful API Dengan Laravel

Membuat RESTful API dengan Laravel

Membuat RESTful API dengan Laravel

Sebelumnya kita sudah membuat CRUD Tanpa reload dengan laravel, dimana pada tutorial tersebut kita sudah membuat project, konfigurasi ke database, dan juga membuat model dan migration.

Pada artikel kali ini kita akan melanjutkan project tersebut yaitu untuk membuat RESTful API. Sedikit definisi singkat tentang Restful API dapat kita lihat pada pembahasan sebelumnya yaitu “apa itu restful api“. 

Membuat controller dan juga route untuk API

Karena kita akan melanjutkan project dari CRUD Tanpa reload dengan laravel maka kita buka folder dari project tersebut. Kemudian buka terminal dan buat Controller dengan sintaks:

php artisan make:controller api/CategoryController –-api

Maka hasilnya adalah folder baru app/http/controller/api dengan file CategoryController.php akan terbuat. Kemudian buat routes dan buka api.php dari routes direktori, kemudian tambahkan sintaks berikut:

Route::apiResource('category', categoryController::class);

Untuk melihat list route yang telah kita buat kita dapat menggunakan sintaks php artisan route:list

Kita pun bisa mempersingkat routing untuk GET,POST,GET dengan id, PUT, dan juga delete untuk API dengan sintaks routing seperti diatas.

Membuat Endpoint untuk GET ALL (Mengambil Semua Data)

Setelah itu, buka file categoryController.php pada direktori app/Http/controller/api dan perbaharui function index yang sudah terbentuk:

//get All
    public function index()
    {
        try {
            $category = Category::all();
            return response()->json($category, Response::HTTP_OK);
        } catch (QueryException $e) {
            $error = [
                'error' => $e->getMessage()
            ];
            return response()->json($error, Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

Kita gunakan try-catch untuk menangani error pada Query menggunakan QueryException, dimana jika terjadi error dari query database maka akan dikembalikan berupa pesan error.

Setelah itu kita save dan kita coba test code tersebut dengan cara menjalankan programnya menggunakan php artisan serve  di terminal, dan kemudian buka postman dan jalankan method get dengan link http://localhost:8000/api/category seperti pada gambar dibawah:

Membuat Endpoint untuk Post

Setelah memperbarui function index, kita pindah ke function store di bawah function index. Function ini digunakan untuk menambah data ke database menggunakan code di bawah ini: 

public function store(Request $request)
    {
        try {
            $validator = validator::make($request->all(), [
                'name' => 'required'
            ]);
            if ($validator->fails()) {
                return response()->json(['error' => $validator->errors()], Response::HTTP_UNPROCESSABLE_ENTITY);
            }
            Category::create($request->all());
            $response = [
                'Success' => 'New Category Created',
            ];
            return response()->json($response, Response::HTTP_CREATED);
        } catch (QueryException $e) {
            $error = [
                'error' => $e->getMessage()
            ];
            return response()->json($error, Response::HTTP_UNPROCESSABLE_ENTITY);
        }
    }

Seperti sebelumnya, kita menggunakan try-catch untuk error handling.  Ketika membuat data, alangkah baiknya jika kita menggunakan validator untuk memvalidasi data yang akan di-input agar sesuai dengan yang kita inginkan.  Disini kita gunakan validasi bahwa nama category harus diisi jika tidak maka server akan merespon dengan error 422 dan pesan error

 

Jika validasi berhasil, maka kita akan menjalankan eloquent ORM dari laravel yaitu create untuk menginput datanya dan memasukan semua request dengan cara mengembalikan respon json berupa message success. 

Sekarang kita coba masukkan data dengan postman yaitu dengan cara buka postman dan jalankan method post dengan link http://localhost:8000/api/category, kemudian ubah body menjadi raw dan json dengan mengisikan data yang ingin dikirim.  Jika sukses maka akan memberikan pesan success dan jika di check melalui method get all akan terlihat:

Jika tidak sesuai dengan validator maka akan muncul pesan error seperti pada gambar dibawah:

Atau jika error karena connection database atau query yang salah, maka akan pesan error dari QueryException akan dimunculkan seperti gambar dibawah:

Membuat Endpoint untuk GET by id

Lanjut ke function di bawah store yaitu show, dimana show ini digunakan untuk mengambil data dengan id tertentu saja. Misalnya data dengan id 8 maka server akan mengembalikan data dengan id 8 saja. Sekarang mari kita coba isi function show tersebut dengan code: 

public function show($id)
    {
        try {
            $category = Category::findOrFail($id);
            $response = [
                $category
            ];
            return response()->json($response, Response::HTTP_OK);
        } catch (\Exception $e) {
            return response()->json([
                'error' => 'No result'
            ], Response::HTTP_FORBIDDEN);
        }
    }

Sama seperti sebelumnya, kita akan gunakan try and catch untuk menghandle error dengan menggunakan eloquent findOrFail dari laravel untuk mengambil data by id dan jika data tidak ada maka akan masuk ke catch untuk menghandle error-nya. Sekarang kita coba dengan postman, jalankan method get dengan link http://localhost:8000/api/category/{id} seperti pada gambar dibawah:

Membuat endpoint untuk PUT (update)

Selanjutnya kita akan membuat endpoint untuk PUT, put ini kita gunakan untuk mengupdate data yang telah diinput, misal kita ingin mengupdate data nama yang ada di id 8. Cara membuatnya kita akan isi pada function update dengan code berikut: 

public function update(Request $request, $id)
    {
        try {
            $category = Category::findOrFail($id);
            $validator = Validator::make($request->all(), [
                'name' => 'required'
            ]);
            if ($validator->fails()) {
                return response()->json(['succeed' => false, 'Message' => $validator->errors()], Response::HTTP_UNPROCESSABLE_ENTITY);
            }
            $category->update($request->all());
            $response = [
                'Success' => 'Category Updated'
            ];
            return response()->json($response, Response::HTTP_OK);
        } catch (\Exception $e) {
            return response()->json([
                'error' => 'no result',
            ], Response::HTTP_UNPROCESSABLE_ENTITY);
        }
    }

Di sini kita ambil datanya terlebih dahulu menggunakan findOrFail, setelah itu kita gunakan validator seperti create tadi. Kita update datanya menggunakan eloquent dari laravel. Sekarang kita akan coba update data dengan ID 8: 

Membuat Endpoint untuk Delete

Selanjutnya kita akan membuat endpoint untuk delete, delete ini kita gunakan untuk menghapus data yang telah diinput, misalnya jika kita ingin menghapus data dengan id 11. Cara membuatnya kita akan isi pada function destroy dengan code berikut: 

    public function destroy($id)
    {
        try {
            Category::findOrFail($id)->delete();
            return response()->json(['success' => 'Category deleted successfully.']);
        } catch (\Exception $e) {
            return response()->json([
                'error' => 'No result'
            ], Response::HTTP_FORBIDDEN);
        }
    }

Kita bisa langsung gunakan eloquent dari laravel untuk melakukan delete dengan find kemudian delete. Jika sudah sekarang kita coba dengan postman:

Demikian pembahasan kita kali ini.  Untuk kalian yang berminat belajar lebih lanjut tentang pemrograman php dan bahasa pemrograman lainnya, silahkan kunjungi social media Xsis Academy untuk mendapatkan informasi lebih lanjut mengenai Bootcamp Xsis Academy atau instagram Xsis Academy.

 

Selain itu, temukan juga video tutorial ngoding dari Tim Trainer Xsis Academy pada channel ETG berikut ini Youtube Equine Technologies Group

———-

Full source code : 

https://github.com/brahmantiodiaz/belajar-laravel-xsis

 

——–

Penulis : Aulia Brahmantio Diaz – Webmaster Xsis Mitra Utama

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back To Top
Table Of Content