Sekarang kita akan belajar membuat CRUD RESTful API untuk data places. Dimana di dalam proses
insert data place nanti kita akan melakukan multiple upload gambar
menggunakan relasi yang sudah pernah kita buat. Artinya 1 data place bisa memiliki banyak
gambar.
Langkah 1 - Membuat Resource
Place
Pertama, kita akan belajar membuat sebuah resource terlebih dahulu, fungsinya adalah untuk
melakukan transformasi data yang ada di dalam Model menjadi format JSON.
Silahkan jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam
project Laravel-nya.
php artisan make:resource PlaceResource
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file baru dengan nama
PlaceResource.php yang berada di dalam folder app/Http/Resource.
Setelah itu, kita akan melakukan modifikasi di dalam file tersebut dengan tujuan agar
format JSON yang di hasilkan bisa sesuai dengan keinginan kita.
Silahkan buka file tersebut, kemudian ubah semua kode-nya menjadi seperti berikut ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PlaceResource extends JsonResource
{
public $status;
public $message;
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Dari perubahan kode di atas, pertama kita membuat 2 public properti, properti tersebut nantinya
akan diisi nilai yang dikirimkan oleh controller sebagai parameter.
public $status;
public $message;
Setelah itu, kita menambahkan method __contruct. Method ini akan pertama
kali dijalankan ketika class PlaceResource di panggil, dimana di dalam
method ini kita definisikan 3 parameter, yaitu :
$status : merupakan properti $status yang kita buat di atas, yang mana
isinya nanti akan berupa nilai boolean, yaitu true atau false
yang dikirimkan secara dinamis oleh controller.
$message : merupakan properti $message yang kita buat di atas, yang mana
isinya nanti akan berupa pesan/message tentang response dari Rest API yang dikirimkan oleh
controller.
$resource : merupakan data yang akan di transformasi menjadi Rest API, ini nanti akan
berupa data Model yang dikirim dari controller.
Kemudian kita return ketiga variable di atas di dalam method
toArray.
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
Langkah 2 - Membuat Controller Place
Sekarang kita akan lanjutkan untuk membuat sebuah controller untuk data place. Silahkan
jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project
Laravel.
php artisan make:controller Api/Admin/PlaceController
Jika perintah di atas berhasil dijalankan, maka kita akan mendapatkan 1 file baru dengan nama
PlaceController.php yang berada di dalam folder
app/Http/Controllers/Api/Admin.
Setelah itu, silahkan buka file tersebut dan ubah semua kode-nya menjadi seperti berikut ini :
<?php
namespace App\Http\Controllers\Api\Admin;
use App\Models\Place;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\PlaceResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
class PlaceController extends Controller
{
public function index()
{
$places = Place::with('category')->when(request()->q, function($places) {
$places = $places->where('title', 'like', '%'. request()->q . '%');
})->latest()->paginate(5);
return new PlaceResource(true, 'List Data Places', $places);
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|unique:places',
'category_id' => 'required',
'description' => 'required',
'phone' => 'required',
'website' => 'required',
'office_hours' => 'required',
'address' => 'required',
'latitude' => 'required',
'longitude' => 'required',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
$place = Place::create([
'title' => $request->title,
'slug' => Str::slug($request->title, '-'),
'user_id' => auth()->guard('api')->user()->id,
'category_id' => $request->category_id,
'description' => $request->description,
'phone' => $request->phone,
'website' => $request->website,
'office_hours' => $request->office_hours,
'address' => $request->address,
'latitude' => $request->latitude,
'longitude' => $request->longitude,
]);
if($request->hasFile('image')) {
$images = $request->file('image');
foreach($images as $image) {
$image->storeAs('places', $image->hashName(), 'public');
$place->images()->create([
'image' => $image->hashName(),
'palce_id' => $place->id
]);
}
}
if($place) {
return new PlaceResource(true, 'Data Place Berhasil Disimpan!', $place);
}
return new PlaceResource(false, 'Data Place Gagal Disimpan!', null);
}
public function show($id)
{
$place = Place::with('images')->whereId($id)->first();
if($place) {
return new PlaceResource(true, 'Detail Data Place!', $place);
}
return new PlaceResource(false, 'Detail Data Place Tidak Ditemukan!', null);
}
public function update(Request $request, Place $place)
{
$validator = Validator::make($request->all(), [
'title' => 'required|unique:places,title,'.$place->id,
'category_id' => 'required',
'description' => 'required',
'phone' => 'required',
'website' => 'required',
'office_hours' => 'required',
'address' => 'required',
'latitude' => 'required',
'longitude' => 'required',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
$place->update([
'title' => $request->title,
'slug' => Str::slug($request->title, '-'),
'user_id' => auth()->guard('api')->user()->id,
'category_id' => $request->category_id,
'description' => $request->description,
'phone' => $request->phone,
'website' => $request->website,
'office_hours' => $request->office_hours,
'address' => $request->address,
'latitude' => $request->latitude,
'longitude' => $request->longitude,
]);
if($request->hasFile('image')) {
$images = $request->file('image');
foreach($images as $image) {
$image->storeAs('places', $image->hashName(), 'public');
$place->images()->create([
'image' => $image->hashName(),
'palce_id' => $place->id
]);
}
}
if($place) {
return new PlaceResource(true, 'Data Place Berhasil Diupdate!', $place);
}
return new PlaceResource(false, 'Data Place Gagal Diupdate!', null);
}
public function destroy($id)
{
$place = Place::findOrFail($id);
foreach($place->images()->get() as $image) {
Storage::disk('public')->delete('places/'.basename($image->image));
$image->delete();
}
if($place->delete()) {
return new PlaceResource(true, 'Data Place Berhasil Dihapus!', null);
}
return new PlaceResource(false, 'Data Place Gagal Dihapus!', null);
}
}
Dari perubahan kode di atas, pertama kita melakukan import Model Place terlebih
dahulu. Karena kita akan banyak menggunakan Model ini untuk mendapatkan data, insert dan
lain-lain.
use App\Models\Place;
Setelah itu, kita juga melakukan import Helper string yaitu Str
dari Laravel. Dimana akan kita gunakan untuk melakukan generate slug dari data
place.
use Illuminate\Support\Str;
Kemudian kita juga melakukan import HTTP
Request dari Laravel, yang digunakan untuk menerima sebuah request yang
dikirimkan oleh form, cookies, url dan lain-lain.
use Illuminate\Http\Request;
Dan kita juga import PlaceResource yang sudah kita buat sebelumnya. Dimana akan
kita gunakan untuk melakukan transformasi data di dalam Model menjadi format JSON.
use App\Http\Resources\PlaceResource;
Karena kita akan melakukan upload file ke dalam server, maka kita butuh bantuan Facades
Storage dari Laravel.
use Illuminate\Support\Facades\Storage;
Dan karena kita akan melakukan proses insert data ke dalam database, maka kita butuh
sebuah validasi untuk memastikan data yang akan disimpan sudah sesuai dengan yang diharapkan. Dan disini
kita akan menggunakan Facades Validator dari Laravel.
use Illuminate\Support\Facades\Validator;
Dan jika kita perhatikan, di dalam class PlaceController kita menambahkan 5
method baru, yaitu :
function index - menampilkan list data places.
function store - melakukan proses insert data place.
function show - menampilkan detail data place.
function update - melakukan proses update data place.
function destroy - mengahapus data place.
function index
Method ini akan kita gunakan untuk mendapatkan list data places dari database
melalui Model Place. Dimana kita juga akan memanggil relasi category di dalam
Model Place.
$places = Place::with('category')....
Di atas, kita memanggil relasi yang bernamaa category menggunakan method
with atau biasa disebut dengan Eager
Loading di dalam Laravel. Dimana relasi tersebut sudah kita buat sebelumnya di
dalam Model.
Setelah itu, kita membuat sebuah kondisi menggunakan method when, method
ini akan dijalankan ketika kondisi bernilai true.
->when(request()->q, function($places) {
})
Jadi di dalam method when kita membuat kondisi apabila ada sebuah request
dengan nama q, maka kita akan melakukan proses pencarian ke dalam table
places berdasarkan attribute title yang sesuai dengan isi yang ada di
dalam request q tersebut.
$places = $places->where('title', 'like', '%'. request()->q . '%');
Tapi, jika request q tidak memiliki nilai / value, maka kita tidak akan
menjalankan kode di atas. Yang artinya proses tersebut akan dilewati.
Setelah itu, kita akan urutkan datanya menggunakan method latest(), yang tujuannya
agar menampilkan data yang paling terbaru. Dan setelah itu, kita batasi data yang akan ditampilkan dari
setiap halaman menggunakan method paginate.
->latest()->paginate(5);
Jika data sudah ditemukan, maka kita akan lakukan return menggunakan PlaceResource
agar data diubah menjadi format JSON.
return new PlaceResource(true, 'List Data Places', $places);
function store
Method ini akan kita gunakan untuk melakukan proses insert data ke dalam
database, dimana kita juga akan melakukan proses upload multiple gambar ke
dalam server.
Sebelum itu, kita akan membuat sebuah validasi terlebih dahulu, tujuannya untuk memvalidasi data yang
akan di simpan di dalam database apakah sudah sesuai dengan yang diharapkan.
$validator = Validator::make($request->all(), [
'title' => 'required|unique:places',
'category_id' => 'required',
'description' => 'required',
'phone' => 'required',
'website' => 'required',
'office_hours' => 'required',
'address' => 'required',
'latitude' => 'required',
'longitude' => 'required',
]);
Dari penambahan validasi di atas, kurang lebih penjelasannya seperti berikut ini :
| KEY |
VALIDATION |
DESCRIPTION |
title |
required |
field wajib diisi. |
|
unique:places |
field bersifat unik dan tidak boleh ada yang sama di dalam table
places.
|
category_id |
required |
field wajib diisi. |
description |
required |
field wajib diisi. |
phone |
required |
field wajib diisi. |
website |
required |
field wajib diisi. |
office_hours |
required |
field wajib diisi. |
address |
required |
field wajib diisi. |
latitude |
required |
field wajib diisi. |
longitude |
required |
field wajib diisi. |
Jika data yang dikirimkan belum sesuai dengan validasi di atas, maka kita akan melakukan return
menggunakan format JSON dengan informasi error validasi.
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
Tapi jika data yang dikirimkan sudah sesuai, maka kita akan melakukan proses insert data ke
dalam database.
$place = Place::create([
'title' => $request->title,
'slug' => Str::slug($request->title, '-'),
'user_id' => auth()->guard('api')->user()->id,
'category_id' => $request->category_id,
'description' => $request->description,
'phone' => $request->phone,
'website' => $request->website,
'office_hours' => $request->office_hours,
'address' => $request->address,
'latitude' => $request->latitude,
'longitude' => $request->longitude,
]);
Dari proses insert data di atas, kurang lebih seperti berikut ini penjelasannya.
| ATTRIBUTE |
VALUE |
DESCRIPTION |
title |
$request->title |
mengambil dari request yang bernama title. |
slug |
Str::slug($request->title, '-') |
mengambil dari request yang bernama title, kemudian di letakkan di
dalam Str::slug dengan tujuan menambahkan karakter - sebagai
pengganti spasi antar kata. |
user_id |
auth()->guard('api')->user()->id |
mengambil ID user yang sedang login. |
category_id |
$request->category_id |
mengambil dari request yang bernama category_id. |
description |
$request->description |
mengambil dari request yang bernama description. |
phone |
$request->phone |
mengambil dari request yang bernama phone. |
website |
$request->website |
mengambil dari request yang bernama website. |
office_hours |
$request->office_hours |
mengambil dari request yang bernama office_hours. |
address |
$request->address |
mengambil dari request yang bernama address. |
latitude |
$request->latitude |
mengambil dari request yang bernama latitude. |
longitude |
$request->longitude |
mengambil dari request yang bernama longitude. |
Setelah data berhasil di insert ke dalam database, langkah selanjutnya kita akan
melakukan proses upload multiple gambar.
Pertama, kita akan melakukan pengecekan terlebih dahulu, apakah ada sebuah request dengan tipe
file yang bernama image.
if($request->hasFile('image')) {
}
Jika ada, maka kita buat sebuah variable baru dengan nama $images isinya adalah
request file yang bernama image, dimana valuenya nanti akan
berupa beberapa gambar.
$images = $request->file('image');
Karena nilai dari variable $images lebih dari satu, maka kita perlu melakukan
perulangan data.
foreach($images as $image) {
}
Di dalam perulangan data di atas, pertama kita akan melakukan upload gambar ke dalam
server menggunakan method storeAs dan gambarnya akan disimpan di dalam
folider storage/app/public/places dan untuk nama dari file tersebut akan
di random menggunakan method hashName.
$image->storeAs('places', $image->hashName(), 'public');
Setelah gambar berhasil di upload di dalam server, maka selanjutnya kita akan melakukan
proses insert data gambar di dalam relasi.
$place->images()->create([
'image' => $image->hashName(),
'palce_id' => $place->id
]);
Di atas, kita menggunakan object $place untuk memanggil relasi images
dan melakukan proses insert menggunakan method create. Dan data yang di
insert adalah nama dari gambar yang telah di upload dan ID dari data place.
Jika dari proses insert data place di atas berhasil, maka kita akan melakukan
return menggunakan PlaceResource dengan status success
true.
return new PlaceResource(true, 'Data Place Berhasil Disimpan!', $place);
Tapi, jika proses insert data place gagal dilakukan, maka kita akan melakukan
return menggunakan PlaceResource dengan status success
false.
return new PlaceResource(false, 'Data Place Gagal Disimpan!', null);
function show
Method ini akan digunakan untuk menampilkan detail data berdasarkan ID yang di dapat
dari URL atau parameter. Disini kita menggunakan Eloquent untuk
mencari data tersebut.
$place = Place::with('images')->whereId($id)->first();
Di atas kita mencari data place berdasarkan ID yang di dapatkan dari variable
$id, variable tersebut akan berisi data yang diambil dari parameter URL.
Dan di atas kita juga memanggil relasi image meggunakan method with
atau biasa disebut dengan Eager
Loading.
Jika data ditemukan, maka kita akan melakukan return menggunakan PlaceResource
dengan status success true.
return new PlaceResource(true, 'Detail Data Place!', $place);
Dan jika data tidak ditemukan, maka akan melakukan return juga menggunakan
PlaceeResource dengan status success false.
return new PlaceResource(false, 'Detail Data Place Tidak Ditemukan!', null);
function update
Method ini akan digunakan untuk melakukan proses update data ke dalam
database. Sebelum data tersebut di update, kita akan melakukan validasi terlebih
dahulu, tujuannya agar memastikan data yang akan di update tersebut sudah sesuai dengan yang
diharapkan.
$validator = Validator::make($request->all(), [
'title' => 'required|unique:places,title,'.$place->id,
'category_id' => 'required',
'description' => 'required',
'phone' => 'required',
'website' => 'required',
'office_hours' => 'required',
'address' => 'required',
'latitude' => 'required',
'longitude' => 'required',
]);
Dari penambahan kode validasi di atas, kurang lebih penjelasannya seperti berikut ini :
| KEY |
VALIDATION |
DESCRIPTION |
title |
required |
field wajib diisi. |
|
unique:places,title,'.$place->id |
field bersifat unik dan tidak boleh ada yang sama di dalam table
places. Karena bersifat unik, maka untuk proses update kita
tambahkan title,'.$place->id, yang artinya kusus ID
place yang diupdate akan dikecualikan.
|
category_id |
required |
field wajib diisi. |
description |
required |
field wajib diisi. |
phone |
required |
field wajib diisi. |
website |
required |
field wajib diisi. |
office_hours |
required |
field wajib diisi. |
address |
required |
field wajib diisi. |
latitude |
required |
field wajib diisi. |
longitude |
required |
field wajib diisi. |
Jadi, jika data yang dikirimkan belum sesuai dengan validasi di atas, maka akan melakukan return dengan
format JSON dengan informasi error validasi.
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
Tapi, jika data yang dikirimkan sudah sesuai maka kita akan melakukan proses update data ke
dalam database.
$place->update([
'title' => $request->title,
'slug' => Str::slug($request->title, '-'),
'user_id' => auth()->guard('api')->user()->id,
'category_id' => $request->category_id,
'description' => $request->description,
'phone' => $request->phone,
'website' => $request->website,
'office_hours' => $request->office_hours,
'address' => $request->address,
'latitude' => $request->latitude,
'longitude' => $request->longitude,
]);
Setelah itu sama seperti yang ada di dalam function store, kita akan melakukan pengecekan
apakah ada sebuah request dengan jenis file yang bernama image,
if($request->hasFile('image')) {
}
Jika ada, maka kita akan membuat variable baru dengan nama $images yang bertujuan
untuk menyimpan data gambar yang dikirimkan.
$images = $request->file('image');
Karena data gambar tersebut bisa saja bernilai lebih dari 1, maka kita akan melakukan proses perulangan
menggunakan foreach.
foreach($images as $image) {
}
Dimana di dalam perulangan tersebut, kita melakukan upload gambar ke dalam server
menggunakan method storeAs dan melakukan rename untuk nama gambar
tersebut dengan random menggunakan method hashName.
$image->storeAs('places', $image->hashName(), 'public');
Setelah itu, kita melakukan insert data gambar ke dalam relaasi images yang ada di
Model Place.
$place->images()->create([
'image' => $image->hashName(),
'palce_id' => $place->id
]);
Jika proses update data place berhasil dilakukan, maka kita akan melakukan
return menggunakan PlaceResource dengan status success
true.
return new PlaceResource(true, 'Data Place Berhasil Diupdate!', $place);
Tapi, jika proses update data gagal dilakukan, maka kita juga akan melakukan return
menggunakan PlaceResource dengan status success false.
return new PlaceResource(false, 'Data Place Gagal Diupdate!', null);
function destroy
Method ini akan digunakan untuk melakukan proses delete data di dalam database
berdasarkan ID yang didapatkan dari paramter.
$place = Place::findOrFail($id);
Setelah itu, kita akan melakukan perulangan untuk mendapatkan data gambar yang terkait data
place yang akan dihapus.
foreach($place->images()->get() as $image) {
}
Di dalam proses perulangan, kita akan melakuakan hapus gambar di dalam server.
Storage::disk('public')->delete('places/'.basename($image->image));
Setelah gambar berhasil dihapus, selanjutnya kita akan mengahapus data relasinya di dalam table
place_images.
$image->delete();
Dan jika semua gambar dan data relasi yang terkait sudah berhasil dihapus, maka selanjutnya kita akan
melakukan proses hapus data place-nya atau data induknya.
$place->delete()
Jika proses hapus data berhasil dilakukan, maka kita akan return menggunakan PlaceResource
dengan status success true.
return new PlaceResource(true, 'Data Place Berhasil Dihapus!', null);
Tapi, jik proses hapus data gagal dilakukan maka akan melakukan return menggunakan
PlaceResource dengan status success false.
return new PlaceResource(false, 'Data Place Gagal Dihapus!', null);
Langkah 3 - Membuat Route API Places
Setelah berhasil membuat controller beserta method-method di dalamnya, maka
sekarang kita akan lanjutkan membuat route agar controller kita dapat diakses melalui
web browser.
Silahkan buka file routes/api.php, kemudian tambahkan route berikut ini di
dalam prefix admin dan group middleware auth:api,
tepatnya di bawah route /categories.
Route::apiResource('/places', App\Http\Controllers\Api\Admin\PlaceController::class, ['except' => ['create', 'edit'], 'as' => 'admin']);
Untuk memastikan route berhasil di tambahkan, silahkan jalankan perintah berkut ini di dalam
terminal/CMD dan pastikan berada di dalam project Laravel.
php artisan route:list
Langkah 4 - Uji Coba API Places
Setelah berhasil membuat controller, method dan route. Sekarang kita akan
lanjutkan belajar melakukan API testing menggunakan aplikasi Postman.
Uji Coba Method Index
Pertama, kita akan melakukan uji coba API di method index. Silahkan buka aplikasi
Postman kemudian masukkan URL berikut ini : http://localhost:8000/api/admin/places dan untuk method-nya silahkan pilih
GET.
Selanjutnya silahkan klik tab Headers kemudian masukkan key dan
value berikut ini :
| KEY |
VALUE |
Accept |
application/json |
Content-Type |
application/json |
Authorization |
Bearer <spasi> Token |
Jika sudah silahkan klik Send dan jika berhasil maka kita akan mendapatkan response
dalam format JSON yang berisi informasi list data places.
Uji Coba Method Store
Sekarang kita akan lanjutkan uji coba proses insert data ke dalam database, disini kita
juga akan belajar melakukan upload multiple gambar di dalamnya.
Silahkan buka aplikasi Postman kemudian masukkan URL berikut ini : http://localhost:8000/api/admin/places dan untuk method-nya silahkan
pilih POST.
Selanjutnya silahkan klik tab Headers kemudian masukkan key dan
value berikut ini :
| KEY |
VALUE |
Accept |
application/json |
Content-Type |
application/json |
Authorization |
Bearer <spasi> Token |
Karena akan melakukan proses insert, maka kita akan mengirimkan beberapa data ke dalam
server. Silahkan klik tab Body di dalam Postman dan pilih
form-data, kemudian masukkan key dan value berikut ini :
| KEY |
TYPE |
VALUE |
title |
text |
Silahkan diisi dengan judul place yang diinginkan. |
category_id |
text |
Silahkan disesuaikan dengan ID category yang diinginkan. |
description |
text |
Silahkan diisi dengan deskripsi yang diinginkan. |
phone |
text |
Silahkan diisi dengan phone yang diinginkan. |
website |
text |
Silahkan diisi dengan website yang diinginkan. |
office_hours |
text |
Silahkan diisi dengan jam kerja yang diinginkan. |
address |
text |
Silahkan diisi dengan alamat yang diinginkan. |
latitude |
text |
Silahkan diisi dengan latitude yang diinginkan (sementara boleh diisi -).
|
longitude |
text |
Silahkan diisi dengan latitude yang diinginkan (sementara boleh diisi -).
|
image[] |
file |
Pilih gambar dari komputer (opsional, boleh dikosongkan). |
image[] |
file |
Pilih gambar dari komputer (opsional, boleh dikosongkan). |
image[] |
file |
Pilih gambar dari komputer (opsional, boleh dikosongkan). |
Jika sudah mengisi form-data, kurang lebih seperti berikut ini contohnya :
CATATAN : di atas kita contohkan untuk melakukan upload 3 gambar,
teman-teman bisa menambahkan sampai tidak terbatas untuk gambar yang akan di upload.
Sekarang, silahkan klik Send dan jika berhasil maka kita akan mendapatkan response
dengan format JSON yang berisi informasi data berhasil di insert ke dalam
database.
Dan jika coba kita cek di dalam folder storage/app/public/places, maka ketiga
gambar tersebut berhasil di upload.
Uji Coba Method Show
Kita lanjutkan untuk melakukan proses uji coba method show atau menampilkan
detail data berdasarkan ID. Silahkan buka aplikasi Postman kemudian masukkan
URL berikut ini : http://localhost:8000/api/admin/places/1 dan untuk method-nya adalah
GET.
INFORMASI : untuk contoh di atas, saya menggunakan data place yang memiliki
ID 1.
Selanjutnya silahkan klik tab Headers kemudian masukkan key dan
value berikut ini :
| KEY |
VALUE |
Accept |
application/json |
Content-Type |
application/json |
Authorization |
Bearer <spasi> Token |
Jika sudah silahkan klik Send dan jika berhasil maka kita akan mendapatkan response
dalam format JSON yang berisi informasi detail data place berserta relasi
image di dalamnya.
Uji Coba Method Update
Setelah berhasil melakukan proses uji coba insert dan menampilkan detail data, maka
sekarang kita akan lanjutkan untuk melakukan uji coba proses update data.
Silahkan buka aplikasi Postman, kemudian masukkan URL berikut ini : http://localhost:8000/api/admin/places/1 dan untuk method-nya silahkan
pilih POST.
INFORMASI : untuk contoh di atas, saya menggunakan data place yang memiliki
ID 1.
Selanjutnya silahkan klik tab Headers kemudian masukkan key dan
value berikut ini :
| KEY |
VALUE |
Accept |
application/json |
Content-Type |
application/json |
Authorization |
Bearer <spasi> Token |
Karena akan melakukan proses update, maka kita akan mengirimkan beberapa data ke dalam
server. Silahkan klik tab Body di dalam Postman dan
pilih form-data, kemudian masukkan key dan value berikut ini :
| KEY |
TYPE |
VALUE |
title |
text |
Silahkan diisi dengan judul place yang diinginkan. |
category_id |
text |
Silahkan disesuaikan dengan ID category yang diinginkan. |
description |
text |
Silahkan diisi dengan deskripsi yang diinginkan. |
phone |
text |
Silahkan diisi dengan phone yang diinginkan. |
website |
text |
Silahkan diisi dengan website yang diinginkan. |
office_hours |
text |
Silahkan diisi dengan jam kerja yang diinginkan. |
address |
text |
Silahkan diisi dengan alamat yang diinginkan. |
latitude |
text |
Silahkan diisi dengan latitude yang diinginkan (sementara boleh diisi -).
|
longitude |
text |
Silahkan diisi dengan latitude yang diinginkan (sementara boleh diisi -).
|
_method |
text |
PATCH |
Jika sudah mengisi form-data, kurang lebih seperti berikut ini contohnya :
Di atas, kita tidak menambahkan key untuk image. artinya kita melakukan update data
dengan image baru, tapi jika teman-teman ingin mengupdate berserta image
baru, silahkan bisa ditambahkan sendiri.
Dan di atas kita juga menambahkan 1 key baru dengan nama _method yang isinya adalah
PATCH. Key ini digunakan ketika kita melakukan proses update. Karena pada dasarnya
browser itu hanya mengenali 2 jenis request saja, yaitu POST dan GET.
Jika sudah, silahkan klik Send dan jika berhasil maka kita akan mendapatkan
response dengan format JSON yang berisi informasi data place yang baru saja di
update.
Uji Coba Proses Destroy
Terakhir kita akan lakukan uji coba untuk proses destroy atau menghapus data dari
database. Silahkan buka aplikasi Postman, kemudian masukkan
URL berikut ini : http://localhost:8000/api/admin/places/1 dan untuk method-nya silahkan
pilih DELETE.
INFORMASI : untuk contoh di atas, saya menggunakan data place yang memiliki
ID 1.
Selanjutnya silahkan klik tab Headers kemudian masukkan key dan
value berikut ini :
| KEY |
VALUE |
Accept |
application/json |
Content-Type |
application/json |
Authorization |
Bearer <spasi> Token |
Jika sudah, silahkan klik Send dan jika berhasil maka kita akan mendapatkan sebuah
response dengan format JSON yang berisi informasi data telah berhasil dihapus dari
database.