Modul 2 Restful Api Backend Dengan JWT Dan Postman
Modul 2 Restful Api Backend Dengan JWT Dan Postman
- Muhammad Fauzi
Dikutip dari laman official nya, JSON Web Token atau biasa disebut
dengan JWT adalah standar terbuka (RFC 7519) yang mendefinisikan cara untuk
mentransmisikan informasi dengan aman antar pihak sebagai objek JSON.
Informasi ini dapat diverifikasi dan dipercaya karena ditandatangani secara digital.
JWT dapat ditandatangani menggunakan sebuah secreet (dengan algoritma HMAC)
atau pasangan kunci publik / pribadi menggunakan RSA atau ECDSA.
(https://jwt.io/introduction/).
Sederhananya JWT merupakan Web Token yang berupa JSON dan umumnya
digunakan untuk proses authentication. Dimana untuk mendapatkan suatu data di
dalam server kita harus menyertakan token tersebut sebagai kuncinya.
Installasi JWT
{warning} Catatan: Proses installasi membutuhkan koneksi internet!
Silahkan kalian jalankan perintah berikut ini di dalam terminal/CMD/Git dan tentunya
berada di dalam direktori project yang sedang kita kerjakan.
composer require php-open-source-saver/jwt-auth:1.4.2
Jika sudah selesai maka akan ditandai dengan informasi seperti pada gambar di
bawah ini :
Publish JWT
Setelah proses installasi selesai, sekarang silahkan lakukan publish file konfigurasi.
Dengan menJalankan perintah berikut ini di dalam terminal/CMD/Git:
php artisan vendor:publish --
provider="PHPOpenSourceSaver\JWTAuth\Providers\LaravelServiceProvider"
Proses konfigurasi publish jika sudah selesai maka akan ditandai dengan informasi
seperti pada gambar di bawah ini:
Generate Screet Key
Silahkan jalankan perintah di bawah ini di terminal/CMD untuk membuat secret
key di JWT :
php artisan jwt:secret
Jika sudah selesai maka akan di tandai dengan informasi seperti pada gambar di
bawah ini:
],
],
],
'api' => [
'driver' => 'jwt',
// <-- set ke "jwt"
'provider' => 'users',
'hash' => false,
],
],
Sehingga file auth.php secara keseluruhan akan menjadi seperti berikut ini :
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
];
Konfigurasi Model User
Sekarang, kita lanjutkan untuk melakukan beberapa konfigurasi di dalam
Model User agar bisa menggunakan JWT untuk generate token.
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use PHPOpenSourceSaver\JWTAuth\Contracts\JWTSubject; // <-- import JWTSubject
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
/**
* posts
*
* @return void
*/
public function posts()
{
return $this->hasMany(Post::class);
}
/**
* getJWTIdentifier
*
* @return void
*/
public function getJWTIdentifier()
{
return $this->getKey();
}
/**
* getJWTCustomClaims
*
* @return void
*/
public function getJWTCustomClaims()
{
return [];
}
}
Sampai pada langkah ini, kita berhasil melakukan konfigurasi JWT dengan benar,
adapun untuk testing akan kita lanjutkan pada sesi berikutnya, semangat .
Auth API
Controller API Login
Sekarang kita akan mulai dengan membuat controller-nya terlebih dahulu, silahkan
jalankan perintah berikut ini di dalam terminal/CMD :
php artisan make:controller Api/Admin/LoginController
Sekarang buka file tersebut kemudian rubah kode-nya menjadi seperti berikut ini :
<?php
namespace App\Http\Controllers\Api\Admin;
use Illuminate\Http\Request;
use PHPOpenSourceSaver\JWTAuth\Facades\JWTAuth;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
/**
* getUser
*
* @return void
*/
public function getUser()
{
//response data "user" yang sedang login
return response()->json([
'success' => true,
'user' => auth()->guard('api')->user()
], 200);
}
/**
* Refresh a token.
*
* @return \Illuminate\Http\JsonResponse
*/
public function refreshToken(Request $request)
{
//refresh "token"
$refreshToken = JWTAuth::refresh(JWTAuth::getToken());
/**
* logout
*
* @return void
*/
public function logout()
{
//remove "token" JWT
$removeToken = JWTAuth::invalidate(JWTAuth::getToken());
}
}
Route Login
Setelah berhasil membuat controller dan menambahkan method-method di
dalamnya, maka sekarang kita lanjutkan untuk membuat route agar method-
method tersebut dapat digunakan di gunakan oleh aplikasi lain atau sering dikenal
dengan URL Design yang sudah kita bahas di awal bab.
Silahkan buka file routes/api.php kemudian ubah kode-nya menjadi seperti berikut
ini :
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/admin/login
2. http://localhost:8000/api/admin/user
3. http://localhost:8000/api/admin/refresh
4. http://localhost:8000/api/admin/logout
Categories API
Resources API Categories
Pertama kita akan membuat sebuah Resource terlebih dahulu, yang mana akan di
gunakan untuk mentransformasi Model Category ke dalam format JSON yang lebih
baik dan cepat. Silahkan kalian jalankan perintah berikut ini di dalam terminal/CMD
dan yang pasti di dalam project Laravel :
php artisan make:resource CategoryResource
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Resources/ dengan file yang bernama CategoryResource.php.
Silahkan kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
public $status;
public $message;
/**
* __construct
*
* @param mixed $status
* @param mixed $message
* @param mixed $resource
* @return void
*/
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Https/Controllers/Api/Admin/ dengan file yang
bernama CategoryController.php. Silahkan kalian buka file tersebut, kemudian
sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Controllers\Api\Admin;
use App\Models\Category;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
use App\Http\Resources\CategoryResource;
use Illuminate\Support\Facades\Validator;
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => 'required|image|mimes:jpeg,jpg,png|max:2000',
'name' => 'required|unique:categories',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
//upload image
$image = $request->file('image');
$image->storeAs('public/categories', $image->hashName());
//create category
$category = Category::create([
'image'=> $image->hashName(),
'name' => $request->name,
'slug' => Str::slug($request->name, '-'),
]);
if($category) {
//return success with Api Resource
return new CategoryResource(true, 'Data Category Berhasil Disimpan!',
$category);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$category = Category::whereId($id)->first();
if($category) {
//return success with Api Resource
return new CategoryResource(true, 'Detail Data Category!', $category);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Category $category)
{
$validator = Validator::make($request->all(), [
'name' => 'required|unique:categories,name,'.$category->id,
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
if($category) {
//return success with Api Resource
return new CategoryResource(true, 'Data Category Berhasil Diupdate!',
$category);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Category $category)
{
//remove image
Storage::disk('local')->delete('public/categories/'.basename($category-
>image));
if($category->delete()) {
//return success with Api Resource
return new CategoryResource(true, 'Data Category Berhasil Dihapus!',
null);
}
Function keterangan
show menampilkan data category berdasarkan ID yang di dapatkan dari parameter URL
Route Categories
Setelah berhasil membuat controller dan beberapa method di dalamnya, sekarang
kita lanjutkan untuk membuat route agar controller dan method tersebut dapat
digunakan. Silahkan buka file routes/api.php kemudian tambahkan route di bawah
ini di dalam prefix admin dan group middleware auth:api dan tepatnya di
bawah route user. Maka secara keseluruhan akan menjadi seperti di bawah ini :
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/admin/categories
Url endpoint di atas bisa di gunakan sebagai API untuk di konsumsi oleh platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada api yang
sudah kita buat menggunakan aplikasi postman.
Posts API
Resources API Posts
Seperti pada RESTFUL API CATEGORIES, Sekarang kita akan
membuat Resource yang akan digunakan untuk mengubah Model ke
dalam format JSON. Silahkan jalankan perintah berikut ini di dalam terminal/CMD :
php artisan make:resource PostResource
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Resources/ dengan file yang bernama PostResource.php. Silahkan
kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* __construct
*
* @param mixed $status
* @param mixed $message
* @param mixed $resource
* @return void
*/
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Controllers/Api/Admin/ dengan file yang
bernama PostController.php. Silahkan kalian buka file tersebut, kemudian sesuaikan
menjadi seperti dibawah ini :
<?php
namespace App\Http\Controllers\Api\Admin;
use App\Models\Post;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\PostResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'image' => 'required|image|mimes:jpeg,jpg,png|max:2000',
'title' => 'required|unique:posts',
'category_id' => 'required',
'content' => 'required',
'description' => 'required'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
//upload image
$image = $request->file('image');
$image->storeAs('public/posts', $image->hashName());
$post = Post::create([
'image' => $image->hashName(),
'title' => $request->title,
'slug' => Str::slug($request->title, '-'),
'category_id' => $request->category_id,
'user_id' => auth()->guard('api')->user()->id,
'content' => $request->content,
'description' => $request->description
]);
$post->save();
if($post) {
//return success with Api Resource
return new PostResource(true, 'Data Post Berhasil Disimpan!', $post);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$post = Post::with('category')->whereId($id)->first();
if($post) {
//return success with Api Resource
return new PostResource(true, 'Detail Data Post!', $post);
}
//return failed with Api Resource
return new PostResource(false, 'Detail Data Post Tidak DItemukan!', null);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Post $post)
{
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts,title,'.$post->id,
'category_id' => 'required',
'content' => 'required',
'description' => 'required'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
$post->update([
'image' => $image->hashName(),
'title' => $request->title,
'slug' => Str::slug($request->title, '-'),
'category_id' => $request->category_id,
'user_id' => auth()->guard('api')->user()->id,
'content' => $request->content,
'description' => $request->description
]);
$post->update([
'title' => $request->title,
'slug' => Str::slug($request->title, '-'),
'category_id' => $request->category_id,
'user_id' => auth()->guard('api')->user()->id,
'content' => $request->content,
'description' => $request->description
]);
$post->save();
if($post) {
//return success with Api Resource
return new PostResource(true, 'Data Post Berhasil Diupdate!', $post);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Post $post)
{
//remove image
Storage::disk('local')->delete('public/posts/'.basename($post->image));
if($post->delete()) {
//return success with Api Resource
return new PostResource(true, 'Data Post Berhasil Dihapus!', null);
}
Function keterangan
show menampilkan data post berdasarkan ID yang di dapatkan dari parameter URL
destroy
Menghapus data post dari database berdasarkan ID
Route Posts
Setelah berhasil membuat Resource dan controller beserta method-method di
dalamnya, maka sekarang kita lanjutkan untuk
membuatkan route untuk controller tersebut.
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Poss
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
});
Users API
Resources API Users
Pertama tentu saja kita akan membuat sebuah Resource terlebih dahulu, yang
mana akan difungsikan untuk melakukan transformasi dari Model menjadi
sebuah response dengan format JSON. Silahkan jalankan perintah berikut ini di
dalam terminal/CMD :
php artisan make:resource UserResource
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Resources/ dengan file yang bernama UserResource.php. Silahkan
kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Controllers/Api/Admin/ dengan file yang
bernama UserController.php. Silahkan kalian buka file tersebut, kemudian sesuaikan
menjadi seperti dibawah ini :
<?php
namespace App\Http\Controllers\Api\Admin;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\UserResource;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//get users
$users = User::when(request()->q, function($users) {
$users = $users->where('name', 'like', '%'. request()->q . '%');
})->latest()->paginate(5);
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|unique:users',
'password' => 'required'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
//create user
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password)
]);
if($user) {
//return success with Api Resource
return new UserResource(true, 'Data User Berhasil Disimpan!', $user);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$user = User::whereId($id)->first();
if($user) {
//return success with Api Resource
return new UserResource(true, 'Detail Data User!', $user);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, User $user)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|unique:users,email,'.$user->id,
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
if($request->password == "") {
if($user) {
//return success with Api Resource
return new UserResource(true, 'Data User Berhasil Diupdate!', $user);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(User $user)
{
if($user->delete()) {
//return success with Api Resource
return new UserResource(true, 'Data User Berhasil Dihapus!', null);
}
Function keterangan
index
menampilkan list data users dari database
show menampilkan data user berdasarkan ID yang di dapatkan dari parameter URL
Route Users
Setelah berhasil membuat Resource dan controller beserta method-method di
dalamnya, maka sekarang kita lanjutkan untuk
membuatkan route untuk controller tersebut.
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Poss
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
//Users
Route::apiResource('/users',
App\Http\Controllers\Api\Admin\UserController::class);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/admin/users
Url endpoint diatas bisa gunakan sebagai API untuk digunakan ke dalam platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada API yang
sudah kita buat menggunakan aplikasi postman.
Saran API
Resources API Saran
Pertama kita akan membuat sebuah Resource terlebih dahulu, yang mana akan di
gunakan untuk mentransformasi Model Saran ke dalam format JSON yang lebih baik
dan cepat. Silahkan kalian jalankan perintah berikut ini di dalam terminal/CMD dan
yang pasti di dalam project Laravel :
php artisan make:resource SaranResource
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Resources/ dengan file yang bernama SaranResource.php. Silahkan
kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* __construct
*
* @param mixed $status
* @param mixed $message
* @param mixed $resource
* @return void
*/
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Https/Controllers/Api/ dengan file yang bernama SaranController.php.
Silahkan kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Controllers\Api;
use App\Models\Saran;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\SaranResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
/**
* store
*
* @param mixed $request
* @return void
*/
public function store(Request $request)
{
//define validation rules
$validator = Validator::make($request->all(), [
'name' => 'required',
'content' => 'required',
]);
//check if validation fails
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
//upload image
//create post
$sarans = Saran::create([
'name' => $request->name,
'content' => $request->content,
]);
//return response
return new SaranResource(true, 'Data Post Berhasil Ditambahkan!',
$sarans);
}
/**
* show
*
* @param mixed $post
* @return void
*/
public function show(Saran $saran)
{
//return single post as a resource
return new SaranResource(true, 'Data Post Ditemukan!', $saran);
}
/**
* update
*
* @param mixed $request
* @param mixed $post
* @return void
*/
//delete post
$saran->delete();
//return response
return new SaranResource(true, 'Data Post Berhasil Dihapus!', null);
}
}
Route Saran
Setelah berhasil membuat controller dan beberapa method di dalamnya, sekarang
kita lanjutkan untuk membuat route agar controller dan method tersebut dapat
digunakan. Silahkan buka file routes/api.php kemudian tambahkan route di bawah
ini di dalam prefix admin dan group middleware auth:api dan tepatnya di
bawah route users. Maka secara keseluruhan akan menjadi seperti di bawah ini :
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Route Post
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
//Users
Route::apiResource('/users',
App\Http\Controllers\Api\Admin\UserController::class);
//Route Saran
Route::apiResource('/saran', App\Http\Controllers\Api\SaranController::class);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/saran
Url endpoint di atas bisa di gunakan sebagai API untuk di konsumsi oleh platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada api yang
sudah kita buat menggunakan aplikasi postman.
Profil API
Resources API Profil
Pertama kita akan membuat sebuah Resource terlebih dahulu, yang mana akan di
gunakan untuk mentransformasi Model Profil ke dalam format JSON yang lebih
baik dan cepat. Silahkan kalian jalankan perintah berikut ini di dalam terminal/CMD
dan yang pasti di dalam project Laravel :
php artisan make:resource ProfilResource
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Resources/ dengan file yang bernama ProfilResource.php. Silahkan
kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* __construct
*
* @param mixed $status
* @param mixed $message
* @param mixed $resource
* @return void
*/
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Https/Controllers/Api/ dengan file yang bernama ProfilController.php.
Silahkan kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Controllers\Api;
use App\Models\Profil;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\ProfilResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
/**
* 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',
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/profils', $image->hashName());
//create post
$profils = Profil::create([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content,
]);
if($profils) {
//return success with Api Resource
return new ProfilResource(true, 'Data Category Berhasil Disimpan!',
$profils);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$profiles = Profil::whereId($id)->first();
if($profiles) {
//return success with Api Resource
return new ProfilResource(true, 'Detail Data Category!', $profiles);
}
/**
* update
*
* @param mixed $request
* @param mixed $post
* @return void
*/
public function update(Request $request, Profil $profile)
{
//define validation rules
$validator = Validator::make($request->all(), [
'title' => 'required',
'content' => 'required',
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/profils', $image->hashName());
} else {
//return response
return new ProfilResource(true, 'Data Home Berhasil Diubah!', $profile);
}
/**
* destroy
*
* @param mixed $post
* @return void
*/
public function destroy(Profil $profile)
{
//delete image
Storage::delete('public/profils/'.$profile->image);
//delete post
$profile->delete();
//return response
return new ProfilResource(true, 'Data Post Berhasil Dihapus!', null);
}
}
Controller tersebut dapat digunakan untuk
proses CRUD atau Create, Read, Update dan Delete, tapi didalam laravel istilah itu
sedikit berbeda seperti pada penjelasan dibawah ini
Function keterangan
show menampilkan data profil berdasarkan ID yang di dapatkan dari parameter URL
Route Profil
Setelah berhasil membuat controller dan beberapa method di dalamnya, sekarang
kita lanjutkan untuk membuat route agar controller dan method tersebut dapat
digunakan. Silahkan buka file routes/api.php kemudian tambahkan route di bawah
ini di dalam prefix admin dan group middleware auth:api dan tepatnya di
bawah route profil. Maka secara keseluruhan akan menjadi seperti di bawah ini :
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Route Post
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
//Users
Route::apiResource('/users',
App\Http\Controllers\Api\Admin\UserController::class);
//Route Saran
Route::apiResource('/saran', App\Http\Controllers\Api\SaranController::class);
//Route Profil
Route::apiResource('/profile',
App\Http\Controllers\Api\SaranController::class);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/profile
Url endpoint di atas bisa di gunakan sebagai API untuk di konsumsi oleh platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada api yang
sudah kita buat menggunakan aplikasi postman.
Informasi API
Resources API Informasi
Pertama kita akan membuat sebuah Resource terlebih dahulu, yang mana akan di
gunakan untuk mentransformasi Model Informasi yang sudah di buat sebelumnya ke
dalam bentuk format JSON yang lebih baik dan cepat. Silahkan kalian jalankan
perintah berikut ini di dalam terminal/CMD dan yang pasti di dalam project Laravel :
php artisan make:resource InformasiResource
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Resources/ dengan file yang bernama InformasiResource.php.
Silahkan kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* __construct
*
* @param mixed $status
* @param mixed $message
* @param mixed $resource
* @return void
*/
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Https/Controllers/Api/ dengan file yang
bernama InformasiController.php. Silahkan kalian buka file tersebut, kemudian
sesuaikan menjadi seperti di bawah ini :
<?php
namespace App\Http\Controllers\Api;
use App\Models\Informasi;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\InformasiResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
/**
* 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',
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/informasi', $image->hashName());
//create post
$informasis = Informasi::create([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content,
]);
//return response
return new InformasiResource(true, 'Data Post Berhasil Ditambahkan!',
$informasis);
}
/**
* show
*
* @param mixed $post
* @return void
*/
public function show(Informasi $info)
{
//return single post as a resource
return new InformasiResource(true, 'Data Post Ditemukan!', $info);
}
/**
* update
*
* @param mixed $request
* @param mixed $post
* @return void
*/
public function update(Request $request, Informasi $info)
{
//define validation rules
$validator = Validator::make($request->all(), [
'title' => 'required',
'content' => 'required',
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/informasi', $image->hashName());
} else {
//return response
return new InformasiResource(true, 'Data Home Berhasil Diubah!', $info);
}
/**
* destroy
*
* @param mixed $post
* @return void
*/
public function destroy(Informasi $info)
{
//delete image
Storage::delete('public/informasi/'.$info->image);
//delete post
$info->delete();
//return response
return new InformasiResource(true, 'Data Post Berhasil Dihapus!', null);
}
}
Controller tersebut dapat digunakan untuk
proses CRUD atau Create, Read, Update dan Delete, tapi didalam laravel istilah itu
sedikit berbeda seperti pada penjelasan dibawah ini
Function keterangan
Route Informasi
Setelah berhasil membuat controller dan beberapa method di dalamnya, sekarang
kita lanjutkan untuk membuat route agar controller dan method tersebut dapat
digunakan. Silahkan buka file routes/api.php kemudian tambahkan route di bawah
ini di dalam prefix admin dan group middleware auth:api dan tepatnya di
bawah route profil. Maka secara keseluruhan akan menjadi seperti di bawah ini :
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Route Post
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
//Users
Route::apiResource('/users',
App\Http\Controllers\Api\Admin\UserController::class);
//Route Saran
Route::apiResource('/saran', App\Http\Controllers\Api\SaranController::class);
//Route Profil
Route::apiResource('/profile',
App\Http\Controllers\Api\SaranController::class);
//Route Informasi
Route::apiResource('/info',
App\Http\Controllers\Api\InformasiController::class);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/info
Url endpoint di atas bisa di gunakan sebagai API untuk di konsumsi oleh platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada api yang
sudah kita buat menggunakan aplikasi postman.
Statistik API
Resources API Statistik
Pertama kita akan membuat sebuah Resource terlebih dahulu, yang mana akan di
gunakan untuk mentransformasi Model Statistik yang sudah di buat sebelumnya ke
dalam bentuk format JSON yang lebih baik dan cepat. Silahkan kalian jalankan
perintah berikut ini di dalam terminal/CMD dan yang pasti di dalam project Laravel :
php artisan make:resource StatistikResource
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Http/Resources/ dengan file yang bernama StatistikResource.php.
Silahkan kalian buka file tersebut, kemudian sesuaikan menjadi seperti dibawah ini :
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* __construct
*
* @param mixed $status
* @param mixed $message
* @param mixed $resource
* @return void
*/
public function __construct($status, $message, $resource)
{
parent::__construct($resource);
$this->status = $status;
$this->message = $message;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'success' => $this->status,
'message' => $this->message,
'data' => $this->resource
];
}
}
Jika sudah mendapatkan informasi seperti gambar di atas, maka secara otomatis
kita mendapatkan file baru yang terletak di dalam
direktori app/Https/Controllers/Api/ dengan file yang
bernama StatistikController.php. Silahkan kalian buka file tersebut, kemudian
sesuaikan menjadi seperti di bawah ini :
<?php
namespace App\Http\Controllers\Api;
use App\Models\Statistik;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\StatistikResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
/**
* 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',
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/statistiks', $image->hashName());
//create post
$statistiks = Statistik::create([
'image' => $image->hashName(),
'title' => $request->title,
'content' => $request->content,
]);
//return response
return new StatistikResource(true, 'Data Post Berhasil Ditambahkan!',
$statistiks);
}
/**
* show
*
* @param mixed $post
* @return void
*/
public function show(Statistik $statistik)
{
//return single post as a resource
return new StatistikResource(true, 'Data Post Ditemukan!', $statistik);
}
/**
* update
*
* @param mixed $request
* @param mixed $post
* @return void
*/
public function update(Request $request, Statistik $statistik)
{
//define validation rules
$validator = Validator::make($request->all(), [
'title' => 'required',
'content' => 'required',
]);
//upload image
$image = $request->file('image');
$image->storeAs('public/statistiks', $image->hashName());
} else {
//return response
return new StatistikResource(true, 'Data Home Berhasil Diubah!',
$statistik);
}
/**
* destroy
*
* @param mixed $post
* @return void
*/
public function destroy(Statistik $Statistik)
{
//delete image
Storage::delete('public/statistiks/'.$Statistik->image);
//delete post
$Statistik->delete();
//return response
return new StatistikResource(true, 'Data Post Berhasil Dihapus!', null);
}
}
Controller tersebut dapat digunakan untuk
proses CRUD atau Create, Read, Update dan Delete, tapi didalam laravel istilah itu
sedikit berbeda seperti pada penjelasan dibawah ini
Function keterangan
Route Statistik
Setelah berhasil membuat controller dan beberapa method di dalamnya, sekarang
kita lanjutkan untuk membuat route agar controller dan method tersebut dapat
digunakan. Silahkan buka file routes/api.php kemudian tambahkan route di bawah
ini di dalam prefix admin dan group middleware auth:api dan tepatnya di
bawah route info. Maka secara keseluruhan akan menjadi seperti di bawah ini :
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Route Post
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
//Users
Route::apiResource('/users',
App\Http\Controllers\Api\Admin\UserController::class);
//Route Saran
Route::apiResource('/saran', App\Http\Controllers\Api\SaranController::class);
//Route Profil
Route::apiResource('/profile',
App\Http\Controllers\Api\SaranController::class);
//Route Informasi
Route::apiResource('/info',
App\Http\Controllers\Api\InformasiController::class);
//Route Statistik
Route::apiResource('/statistiks',
App\Http\Controllers\Api\StatistikController::class);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/statistiks
Url endpoint di atas bisa di gunakan sebagai API untuk di konsumsi oleh platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada api yang
sudah kita buat menggunakan aplikasi postman.
FRONT END API
Category API
Controller
Setelah sebelumnya kita membuat beberapa RESTFUL API untuk
proses CRUD yang bersifat private dan bisa di gunakan dengan token JWT, maka
sekarang kita akan lanjutkan untuk membuat REST API yang nantinya akan kita
gunakan untuk menampilkan data ke dalam platform mobile tanpa menggunakan
Token JWT.
Disini kita tidak akan membuat sebuah Resource lagi, karena kita cukup
menggunakan Resource yang sudah kita buat sebelumnya.
Sekarang kita akan belajar bagaimana cara membuat Rest API untuk
menampilkan list data categoris dan juga menampilkan list data posts berdasarkan
masing-masing category. Silahkan jalankan perintah berikut ini di dalam
terminal/CMD :
php artisan make:controller Api/Web/CategoryController
Jika kalian memasukkan perintah di atas, maka otomatis kita akan mendapatkan
sebuah file baru yang bernama CategoryController.php yang tersimpan di dalam
direktori app/Http/Controllers/Api/Web/.
Silahkan kalian buka file tersebut, kemudian sesuaikan menjadi seperti di bawah ini :
<?php
namespace App\Http\Controllers\Api\Web;
use App\Http\Controllers\Controller;
use App\Http\Resources\CategoryResource;
use App\Models\Category;
if($category) {
//return with Api Resource
return new CategoryResource(true, 'List Data Post By Category',
$category);
}
/**
* categorySidebar
*
* @return void
*/
public function categorySidebar()
{
$categories = Category::orderBy('name', 'ASC')->get();
Function keterangan
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Poss
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
//Users
Route::apiResource('/users',
App\Http\Controllers\Api\Admin\UserController::class);
});
Route::prefix('web')->group(function () {
//index categories
Route::get('/categories', [App\Http\Controllers\Api\Web\CategoryController::class,
'index']);
//show category
Route::get('/categories/{slug}',
[App\Http\Controllers\Api\Web\CategoryController::class, 'show']);
//categories sidebar
Route::get('/categorySidebar',
[App\Http\Controllers\Api\Web\CategoryController::class, 'categorySidebar']);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/web/categories
2. http://localhost:8000/api/web/categories/slug
3. http://localhost:8000/api/web/categorySidebar
Url endpoint diatas bisa gunakan sebagai API untuk digunakan ke dalam platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada API yang
sudah kita buat menggunakan aplikasi postman.
Post API
Controller
Sekarang kita akan belajar bagaimana cara membuat Rest API untuk
menampilkan list data posts dan juga
menampilkan list data comments berdasarkan posts id.
Sekarang kita akan belajar cara membuat controller baru untuk Rest API Post.
Silahkan jalankan perintah berikut ini di dalam terminal/CMD :
php artisan make:controller Api/Web/PostController
Jika kalian menjalankan perintah di atas, maka otomatis kita akan mendapatkan
sebuah file baru yang bernama PostController.php yang tersimpan di dalam
direktori app/Http/Controllers/Api/Web/.
Silahkan kalian buka file tersebut, kemudian sesuaikan menjadi seperti di bawah ini :
<?php
namespace App\Http\Controllers\Api\Web;
use App\Models\Post;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\PostResource;
use Illuminate\Support\Facades\Validator;
/**
* show
*
* @param mixed $slug
* @return void
*/
public function show($slug)
{
$post = Post::with('user', 'category', 'comments')->where('slug', $slug)-
>first();
if($post) {
//return with Api Resource
return new PostResource(true, 'Detail Data Post', $post);
}
/**
* postHomepage
*
* @return void
*/
public function postHomepage()
{
$posts = Post::with('user', 'category', 'comments')->take(5)->latest()-
>get();
/**
* storeComment
*
* @param mixed $request
* @return void
*/
public function storeComment(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'comment' => 'required'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
//store comment
$post->comments()->create([
'name' => $request->name,
'email' => $request->email,
'comment' => $request->comment
]);
Function keterangan
Set Route
Setelah berhasil membuat controller beserta method-method di dalamnya, maka
sekarang kita lanjutkan untuk membuatkan route untuk controller tersebut.
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
//route login
Route::post('/login', [App\Http\Controllers\Api\Admin\LoginController::class,
'index']);
//data user
Route::get('/user',
[App\Http\Controllers\Api\Admin\LoginController::class, 'getUser']);
//logout
Route::post('/logout',
[App\Http\Controllers\Api\Admin\LoginController::class, 'logout']);
});
//Category
Route::apiResource('/categories',
App\Http\Controllers\Api\Admin\CategoryController::class);
//Poss
Route::apiResource('/posts',
App\Http\Controllers\Api\Admin\PostController::class);
//Users
Route::apiResource('/users',
App\Http\Controllers\Api\Admin\UserController::class);
});
Route::prefix('web')->group(function () {
//index categories
Route::get('/categories', [App\Http\Controllers\Api\Web\CategoryController::class,
'index']);
//show category
Route::get('/categories/{slug}',
[App\Http\Controllers\Api\Web\CategoryController::class, 'show']);
//categories sidebar
Route::get('/categorySidebar',
[App\Http\Controllers\Api\Web\CategoryController::class, 'categorySidebar']);
//index posts
Route::get('/posts', [App\Http\Controllers\Api\Web\PostController::class,
'index']);
//show posts
Route::get('/posts/{slug}', [App\Http\Controllers\Api\Web\PostController::class,
'show']);
//posts homepage
Route::get('/postHomepage', [App\Http\Controllers\Api\Web\PostController::class,
'postHomepage']);
//store comment
Route::post('/posts/storeComment',
[App\Http\Controllers\Api\Web\PostController::class, 'storeComment']);
});
Dari routes di atas kita berhasil membuat url design sebagai berikut :
1. http://localhost:8000/api/web/posts
2. http://localhost:8000/api/web/posts/slug
3. http://localhost:8000/api/web/postHomepage
4. http://localhost:8000/api/web/storeComment
Url endpoint diatas bisa gunakan sebagai API untuk digunakan ke dalam platform
lainnya. Pada langkah selanjutnya kita akan melakukan uji coba pada API yang
sudah kita buat menggunakan aplikasi postman.