Halo teman-teman semuanya, di artikel sebelumnya kita telah berhasil menampilkan data menggunakan Rest API di Laravel. Dan di artikel kali ini kita akan belajar bagaimana cara melakukan insert data menggunakan Rest API.
Dan untuk Rest API yang akan kita buat mendukung upload gambar, sehingga kita juga bisa menambahkan gambar saat proses insert data.
Langkah 1 - Menambahkan Method Store
Pertama, kita akan menambahkan 1 method baru yang bernama store
di dalam controller PostController
. Method ini akan kita fungsikan untuk melakukan proses upload gambar beserta insert data ke dalam database.
Silahkan buka file app/Htpp/Controllers/Api/PostController.php
, kemudian ubah semua kode-nya menjadi seperti berikut ini :
<?php
namespace App\Http\Controllers\Api;
use App\Models\Post;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\PostResource;
use Illuminate\Support\Facades\Validator;
class PostController extends Controller
{
/**
* index
*
* @return void
*/
public function index()
{
//get posts
$posts = Post::latest()->paginate(5);
//return collection of posts as a resource
return new PostResource(true, 'List Data Posts', $posts);
}
/**
* store
*
* @param mixed $request
* @return void
*/
public function store(Request $request)
{
//define validation rules
$validator = Validator::make($request->all(), [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'title' => 'required',
'content' => 'required',
]);
//check if validation fails
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
//upload image
$image = $request->file('image');
$image->storeAs('public/posts', $image->hashName());
//create post
$post = Post::create([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content,
]);
//return response
return new PostResource(true, 'Data Post Berhasil Ditambahkan!', $post);
}
}
Dari penambahan kode di atas, pertama kita import Facades Validator
dari Laravel. Ini akan kita gunakan untuk membuat manual validasi.
use Illuminate\Support\Facades\Validator;
Kemudian kita menambahkan metod baru dengan nama store
. Di dalam method tersebut, pertama-tama kita membuat sebuah validasi yang kurang lebih seperti berikut ini :
//define validation rules
$validator = Validator::make($request->all(), [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'title' => 'required',
'content' => 'required',
]);
Dari penambahan validasi di atas, kurang lebih detailnya seperti berikut ini :
KEY |
VALIDATION |
KETERANGAN |
image |
required |
field wajib diisi. |
|
image |
field harus berupa gambar |
|
mimes:jpeg,png,jpg,gif,svg |
filed harus memiliki extensi jpeg , png , jpg , gif dan svg . |
|
max:2048 |
field maksimal berukuran 2048 Mb / 2Mb. |
title |
required |
field wajib diisi. |
content |
required |
field wajib diisi. |
Jika data yang dikirimkan tidak sesuai dengan validasi di atas, maka kita akan return ke dalam format JSON dengan status code 422
yang berisi informasi validasi error.
//check if validation fails
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
Tapi, jika data yang dikirimkan sudah sesuai, maka kita akan melakukan proses upload gambar ke dalam server.
//upload image
$image = $request->file('image');
$image->storeAs('public/posts', $image->hashName());
Setelah gambar berhasil diupload, langkah selanjutnya adalah melakukan insert data ke dalam database menggunakan Eloquent.
//create post
$post = Post::create([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content,
]);
Dan jika proses insert berhasil dilakukan, maka kita akan return menggunakan PostResource
dengan merngirimkan beberapa parameter, kurang lebih seperti berikut ini :
return new PostResource(true, 'Data Post Berhasil Ditambahkan!', $post);
Langkah 2 - Uji Coba Rest API
Sekarang kita lanjutkan untuk melakukan proses uji coba insert data post. Silahkan buka aplikasi Postman, kemudian masukkan URL berikut ini http://localhost:8000/api/posts dan untuk method-nya silahkan pilih POST
.
Jika sudah, silahkan klik Send
, maka kita akan mendapatkan response error validasi yang dikirimkan oleh controller. Kurang lebih seperti berikut ini :
{
"image": [
"The image field is required."
],
"title": [
"The title field is required."
],
"content": [
"The content field is required."
]
}
Sekarang, kita lanjutkan untuk melakukan insert data. Silahkan buka tab Body
, kemudian pilih form-data
dan masukkan key
dan value
berikut ini :
KEY |
TYPE |
VALUE |
image |
file |
Silahkan pilih gambar dari komputer. |
title |
text |
Masukkan judul post yang diinginkan. |
content |
text |
Masukkan content post yang diinginkan. |
Jika sudah, silahkan klik Send
dan jika berhasil maka kita akan mendapatkan response dalam format JSON yang berisi informasi data berhasil disimpan.
{
"success": true,
"message": "Data Post Berhasil Ditambahkan!",
"data": {
"image": "t4cmezRsQ3jcHsIRUuyE94ZGZ3mqQG0Atd3pJRK7.png",
"title": "Belajar Rest API di Laravel 9",
"content": "Belajar Rest API di Laravel 9",
"updated_at": "2022-02-12T03:28:47.000000Z",
"created_at": "2022-02-12T03:28:47.000000Z",
"id": 1
}
}
Sampai disini pembahasan bagaimana cara melakukan proses insert data ke dalam database menggunakan Rest API di Laravel. Di artikel selanjutnya kita akan belajar bagaimana cara menampilkan detail data berdasarkan ID.
Terima Kasih