Halo teman-teman semuanya, pada kesempatan kali ini kita semua akan belajar bagaiaman cara membuat Rest API untuk kebutuhan delete data dari database, kita juga akan menghapus gambar dari server, terkait dengan data yang dihapus tersebut.
Langkah 1 - Menambahkan Method Destroy
Sekarang kita akan menambahkan 1 method baru di dalam controller PostController. Silahkan buka file app/Http/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\Storage;
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);
}
/**
* show
*
* @param mixed $post
* @return void
*/
public function show(Post $post)
{
//return single post as a resource
return new PostResource(true, 'Data Post Ditemukan!', $post);
}
/**
* update
*
* @param mixed $request
* @param mixed $post
* @return void
*/
public function update(Request $request, Post $post)
{
//define validation rules
$validator = Validator::make($request->all(), [
'image' => '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);
}
//check if image is not empty
if ($request->hasFile('image')) {
//upload image
$image = $request->file('image');
$image->storeAs('public/posts', $image->hashName());
//delete old image
Storage::delete('public/posts/'.$post->image);
//update post with new image
$post->update([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content,
]);
} else {
//update post without image
$post->update([
'title' => $request->title,
'content' => $request->content,
]);
}
//return response
return new PostResource(true, 'Data Post Berhasil Diubah!', $post);
}
/**
* destroy
*
* @param mixed $post
* @return void
*/
public function destroy(Post $post)
{
//delete image
Storage::delete('public/posts/'.$post->image);
//delete post
$post->delete();
//return response
return new PostResource(true, 'Data Post Berhasil Dihapus!', null);
}
}
Dari penambahan kode di atas, kita menambahkan 1 method baru dengan nama destroy
. Dimana di dalam method tersebut pertama kita melakukan hapus gambar dari server terkait data yang akan kita hapus.
//delete image
Storage::delete('public/posts/'.$post->image);
Setelah gambar berhasil dihapus, sekarang kita lanjutkan untuk menghapus data post-nya.
//delete post
$post->delete();
Kemudian kita return menggunakan PostResource
dengan memberikan beberapa parameter.
return new PostResource(true, 'Data Post Berhasil Dihapus!', null);
Langkah 2 - Uji Coba Rest API
Sekarang kita akan melakukan proses uji coba Rest API delete. Silahkan buka aplikasi Postman, kemudian masukkan URL berikut ini http://localhost:8000/api/posts/1 dan untuk method-nya silahkan pilih DELETE
.
INFORMASI : di atas, kita uji coba dengan data yang memiliki ID 1
.
Jika sudah, silahkan klik Send
dan jika berhasil maka akan menampilkan informasi dalam bentuk JSON yang berisi data berhaasil dihapus.
{
"success": true,
"message": "Data Post Berhasil Dihapus!",
"data": null
}
Sampai disini pembahasan bagaimana cara melakukan proses hapus data menggunakan Rest API di Laravel. Jika teman-teman ada problem saat mengikuti materi, silahkan bisa bertanya melalui kolom komentar atau di group telegram SantriKoding.
SOURCE CODE : https://github.com/SantriKoding-com/Laravel-9-Restful-API
Terima Kasih