Membuat REST API-LARAVEL

Suryo Atmojo
8 min readAug 3, 2022

--

Cover

SETUP

Sebelum memulai menggunakan laravel, kita perlu mempersiapkan aplikasi pendukung pemrograman php menggunakan framework laravel.

Aplikasi yang perlu dipersiapkan yaitu composer. Silahkan mengunjungi link berikut untuk mempelajari composer

Link : https://getcomposer.org/

Gambar 1. Halaman website composer

Kita bisa mengikuti petunjuk pada link https://getcomposer.org/download/ untuk melakukan installasi composer.

Untuk installasi Composer, silahkan bisa ikuti langkah-langkahnya sesuai dengan sistem operasi yang digunakan :

Untuk mengetahui apakah Composer berhasil terinstall, kita bisa menjalankan perintah berikut ini di dalam terminal/CMD :

composer

Jika berhasil, maka akan mendapatkan output kurang lebih seperti berikut ini :

gambar 2. menjalankan composer pada CMD

CREATE NEW PROJECT LARAVEL

Setelah berhasil menginstall Composer di dalam komputer, maka kita sekarang sudah bisa melakukan installasi atau membuat project baru dengan Laravel. Pertama, silahkan masuk ke dalam folder dimana kita akan menyimpan project tersebut dan jalankan perintah berikut ini di dalam terminal/CMD :

composer create-project — prefer-dist laravel/laravel belajar_laravel

Gambar 3. create laravel from CMD

Setelah itu kita bisa membuka project installasi laravel dengan menggunakan tools visual studio code sepertio gambar dibawah ini :

Gambar 4. tampilan Visual Studio Code

Kita bisa melakukan check versi laravel yang terpasang pada project yang kita buat dengan perintah

php artisan — version

Gambar 5. check versi laravel melalui CMD

Pastikan untuk menjalankan perintah tersebut, kita sudah masuk pada folder nama aplikasi yang kita buat

Setelah berhasil terinstall, sekarang kita akan mencoba menjalankan project tersebut, silahkan jalankan perintah berikut ini di dalam terminal/CMD :

php artisan serve

Gambar 6. Menjalankan server melalui CMD

Jika berhasil, maka project Laravel akan di jalankan di dalam localhost dengan port 8000, kita bisa membukanya di browser dengan mengetikkan http://127.0.0.1:8000dan kurang lebih seperti ini hasilnya :

Gambar 7. Tampilan antar muka laravel

CONFIGURASI DATABASE

Buat database dengan nama belajar_laravel. Setelah itu, buat tabel dengan nama modelproduks pada phpmyadmin dengan struktur seperti dibawah ini :

Gambar 8. Design tabel modelproduks

Silahkan buka project Laravel dengan text editor, seperti vscode, sublime text dan lain-lain. Dan buka file yang bernama .env dan Rubah file .env menjadi seperti berikut :

APP_NAME=Laravel

APP_ENV=local

APP_KEY=base64:8HJlKzUlDl8E3vzqxL+bhvnUmAepz9wLo68KqU/VdHo=

APP_DEBUG=true

APP_URL=http://localhost

LOG_CHANNEL=stack

LOG_DEPRECATIONS_CHANNEL=null

LOG_LEVEL=debug

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=belajar_laravel

DB_USERNAME=root

DB_PASSWORD=

BROADCAST_DRIVER=log

CACHE_DRIVER=file

FILESYSTEM_DRIVER=local

QUEUE_CONNECTION=sync

SESSION_DRIVER=file

SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1

REDIS_PASSWORD=null

REDIS_PORT=6379

MAIL_MAILER=smtp

MAIL_HOST=mailhog

MAIL_PORT=1025

MAIL_USERNAME=null

MAIL_PASSWORD=null

MAIL_ENCRYPTION=null

MAIL_FROM_ADDRESS=null

MAIL_FROM_NAME=”${APP_NAME}”

AWS_ACCESS_KEY_ID=

AWS_SECRET_ACCESS_KEY=

AWS_DEFAULT_REGION=us-east-1

AWS_BUCKET=

AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=

PUSHER_APP_KEY=

PUSHER_APP_SECRET=

PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY=”${PUSHER_APP_KEY}”

MIX_PUSHER_APP_CLUSTER=”${PUSHER_APP_CLUSTER}”

Di atas, untuk DB_DATABASE merupakan nama database yang akan kita gunakan nanti, dan di atas kita atur dengan nama belajar_laravel.

Kemudian untuk DB_USERNAME silahkan disesuaikan dengan konfigurasi dari MySQL masing-masing, jika menggunakan XAMPP, maka secara default adalah root.

Dan untuk DB_PASSWORD silahkan disesuaikan juga dengan konfigurasi dari MySQL dan jika menggunakan XAMPP, maka defaultnya adalah kosong atau tidak perlu diisi.

CREATE MODEL

WARNING
::Nama dari model mewakili nama tabel (pada tabel nama belakang di tambah “s”)

Example :
Nama model : Modelproduk

Nama tabel : modelproduks

Gambar 9. Design tabel

Setelah berhasil melakukan konfigurasi database, selanjutnya kita akan belajar bagaimana cara membuat model. Ada dua perintah untuk membuat model secara otomatis. Yang pertama adalah

php artisan make:model Modelproduk

Sedangkan yang kedua adalah
php artisan make:model Modelproduk -m

Pada perintah yang kedua, terdapat flag -m dimana berarti kita membuat model sekaligus membuat migration. Pada uji coba kali ini, kita tidak menggunakan flag -m, sehingga kita hanya menjalankan perintah

php artisan make:model Modelproduk

Gambar 10. Create model melalui CMD

Jika berhasil maka akan muncul file Modelproduk.php pada folder Model seperti dibawah ini:

Gambar 11. Struktur Folder Laravel

Setelah itu, rubah isi dari Modelproduk.php seperti dibawah ini

<?php

/**

* author : Suryo Atmojo <suryoatm@gmail.com>

* project : Belajar Laravel

* Start-date : 1–02–2021

*/

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

class Modelproduk extends Model

{

use HasFactory;

protected $fillable = [

‘product’, ‘description’

];

}

CREATE RESOURCE

kita akan membuat resource class baru untuk data produk. Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan tentunya di dalam project Laravel.

php artisan make:resource ProdukResource

Gambar 12. Create Resource melalui CMD

Jika perintah di atas berhasil, maka kita akan dibuatkan 1 file baru dengan nama ProdukResource.php di dalam folder app/Http/Resources/ProdukResource.php.

Gambar 13. Struktur Folder Laravel

Disini kita tidak perlu melakukan perubahan kode apapun di dalam file ini, tapi jika kita mengembangkan aplikasi dengan sekala besar, maka kita bisa melakukan penyesuaian di dalam file resource ini.

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class ProdukResource extends JsonResource

{

/**

* Transform the resource into an array.

*

* @param \Illuminate\Http\Request $request

* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable

*/

public function toArray($request)

{

return parent::toArray($request);

}

}

CREATE CONTROLLER

Setelah berhasil membuat ProdukResource, maka kita lanjutkan untuk membuat controller baru yang kita gunakan sebagai API nantinya. Silahkan jalankan perintah berikut ini di dalam terminal/CMD :

php artisan make:controller Api\ProdukController -r

Gambar 14. Create controller melalui CMD

dengan menggunakan perintah di atas kita membuat sebuah controller baru dengan nama ProdukController.php yang berada di dalam folder app/Http/Controllers/Api

Gambar 15. Struktur Folder Laravel

dan kita tambahkan flag -r yang artinya adalah resource controller, yaitu kita akan dibuatkan method-method di dalam controller tersebut sesuai dengan standart Laravel. Seperti :

  • function index
  • function create
  • function store
  • function show
  • function edit
  • function update
  • function destroy

Sehingga source code akan tampak seperti ini :

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class ProdukController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index()

{

//

}

/**

* Show the form for creating a new resource.

*

* @return \Illuminate\Http\Response

*/

public function create()

{

//

}

/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store(Request $request)

{

//

}

/**

* Display the specified resource.

*

* @param int $id

* @return \Illuminate\Http\Response

*/

public function show($id)

{

//

}

/**

* Show the form for editing the specified resource.

*

* @param int $id

* @return \Illuminate\Http\Response

*/

public function edit($id)

{

//

}

/**

* Update the specified resource in storage.

*

* @param \Illuminate\Http\Request $request

* @param int $id

* @return \Illuminate\Http\Response

*/

public function update(Request $request, $id)

{

//

}

/**

* Remove the specified resource from storage.

*

* @param int $id

* @return \Illuminate\Http\Response

*/

public function destroy($id)

{

//

}

}

Kita lanjutkan untuk menambahkan beberapa kode di dalam controller ProdukController.php agar dapat digunakan untuk proses CRUD nantinya. Silahkan buka file controller tersebut dan ubah kode-nya menjadi seperti berikut ini :

<?php

/**

* author : Suryo Atmojo <suryoatm@gmail.com>

* project : Belajar Laravel

* Start-date : 1–02–2021

*/

namespace App\Http\Controllers\Api;

use App\Models\Modelproduk;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

use App\Http\Resources\ProdukResource;

use Illuminate\Support\Facades\Validator;

class ProdukController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index()

{

//dengan perintah Modelproduk::all() maka akan memunculkan semua data

return new ProdukResource(Modelproduk::all());

}

/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store(Request $request)

{

//set validation

$validator = Validator::make($request->all(), [

‘product’ => ‘required’

]);

//response error validation

if ($validator->fails()) {

return response()->json($validator->errors(), 400);

}

//save to database

$modelproduk = Modelproduk::create([

‘product’ => $request->product,

‘description’ => $request->description,

]);

return new ProdukResource($modelproduk);

}

/**

* Display the specified resource.

* @param \Illuminate\Http\Request $request

* @param Modelproduk $modelproduk

* @return \Illuminate\Http\Response

*/

public function show(Request $request, Modelproduk $modelproduk)

{

$modelproduk = ModelProduk::find($request->produk);

// $modelproduk = ModelProduk::where(‘product’, “tugu buaya”)->first();

return new ProdukResource($modelproduk);

}

/**

* Update the specified resource in storage.

*

* @param \Illuminate\Http\Request $request

* @param Modelproduk $modelproduk

* @return \Illuminate\Http\Response

*/

public function update(Request $request, Modelproduk $modelproduk)

{

//set validation

$validator = Validator::make($request->all(), [

‘product’ => ‘required’

]);

//response error validation

if ($validator->fails()) {

return response()->json($validator->errors(), 400);

}

$modelproduk = ModelProduk::find($request->produk);

//update to database

$modelproduk->update([

‘product’ => $request->product,

‘description’ => $request->description

]);

return new ProdukResource($modelproduk);

}

/**

* Remove the specified resource from storage.

* @param \Illuminate\Http\Request $request

* @param Modelproduk $modelproduk

* @return \Illuminate\Http\Response

*/

public function destroy(Request $request, Modelproduk $modelproduk)

{

$modelproduk = ModelProduk::find($request->produk);

if ($modelproduk) {

$modelproduk->delete();

} else {

dd(“data tidak ada”);

}

return new ProdukResource($modelproduk);

}

}

Referensi :

CREATE ROUTE

Setelah kita membuat controller, tahap selanjutnya adalah modifikasi file route yang berada pada path belajar_laravel\routes\api.php

Menjadi seperti dibawah ini

<?php

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Route;

/*

| — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

| API Routes

| — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

|

| Here is where you can register API routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| is assigned the “api” middleware group. Enjoy building your API!

|

*/

Route::middleware(‘auth:sanctum’)->get(‘/user’, function (Request $request) {

return $request->user();

});

Route::apiResource(‘/produk’, App\Http\Controllers\Api\ProdukController::class);

Untuk melihat apakah route yang kita buat berhasil, kita bisa memverifikasinya dengan perintah berikut ini :

php artisan route:list

Gambar 16. List Route

Setelah selesai, untuk menkalankan project laravel, kita dapat menggunakan perintah

php artisan serve

Setelah itu kita dapat mencoba route yang sudah dibuat dengan membuka postman dan masukkan url endpoint seperti dibawah ini :

Gambar 17. Pesan Error Pada Postman

jika muncul pesan error seperti dibawah ini :

Illuminate\Database\QueryException: SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘belajar_laravel.modelproduks’ doesn’t exist (SQL: select * from `modelproduks`) in file C:\Users\suryoatm\Documents\belajar-laravel\belajar_laravel\vendor\laravel\framework\src\Illuminate\Database\Connection.php on line 712

pastikan nama model sudah sesuai dengan nama tabel (jangan lupa penambahan huruf s di belakang). Setelah merubah nama tabel, lalu jalan kan ulang endpoint diatas pada postman. Sehingga jika semua sudah berjalan dengan baik maka akan muncul seperti gambar dibawah ini :

Gambar 18. Tampilan Postman

--

--