Iman Sugirman
Iman Sugirman
Fullstack Developer, Software Engineer, Frontend Developer

Laravel Custom Error Handler Json Response

01 Januari 2023

Tutorial Custom Laravel Error Handler menggunakan Json Response Biar Terlihat rapi, karena Laravel Tidak Menyediakan Untuk Pengaturan Default, maka kita harus mengubahnya dan mengkonversi response ke Json. Berikut beberapa Handler yang biasanya saya custom :

Mengubah Exception MethodNotAllowedHttpException

Sekarang edit file App/Exceptions/Handler.php dan tambahkan di method :

public function register() { // Area ini yang akan kita buat Custom handler }

Lalu tambahkan kode :

use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; ... $this->renderable(function (MethodNotAllowedHttpException $e) { return response()->json(['error' => 'Method Not Allowed', 'success' => false, 'message' => $e->getMessage()], SymfonyResponse::HTTP_METHOD_NOT_ALLOWED); });

Code diatas akan mengubah Format error ketika anda mau membuat Response Api berupa json dengan error MethodNotAllowedHttpException

Mengubah Exception NotFoundHttpException

Sekarang edit file App/Exceptions/Handler.php dan tambahkan di method :

public function register() { // Area ini yang akan kita buat Custom handler }

Lalu tambahkan kode :

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; ... $this->renderable(function (NotFoundHttpException $e) { return response()->json(['error' => 'Http NotFound', 'success' => false, 'message' => $e->getMessage()], SymfonyResponse::HTTP_NOT_FOUND); });

Code diatas akan mengubah Format error ketika anda mau membuat Response Api berupa json dengan Error NotFoundHttpException

Mengubah Exception UnauthorizedException

Sekarang edit file App/Exceptions/Handler.php dan tambahkan di method :

public function register() { // Area ini yang akan kita buat Custom handler }

Lalu tambahkan kode :

use BadMethodCallException; ... $this->renderable(function (BadMethodCallException $e) { return response()->json(['error' => 'Http NotFound', 'success' => false, 'message' => $e->getMessage()], 403); });

Code diatas akan mengubah Format error ketika anda mau membuat Response Api berupa json dengan Error BadMethodCallException

Mengubah Exception UnauthorizedException

Sekarang edit file App/Exceptions/Handler.php dan tambahkan di method :

public function register() { // Area ini yang akan kita buat Custom handler }

Lalu tambahkan kode :

// Jika anda menggunakan Spatie Permissions use Spatie\Permission\Exceptions\UnauthorizedException; ... $this->renderable(function (UnauthorizedException $e) { return response()->json(['error' => 'You do not have the required authorization.', 'success' => false, 'message' => $e->getMessage()], 403); });

Code diatas akan mengubah Format error ketika anda mau membuat Response Api berupa json dengan Error UnauthorizedException

Gabungan Untuk Menggunakan Semua Handler

Untuk Menggabungkan Semua Error Handler, bisa menambahkan seperti berikut :

use BadMethodCallException; use Spatie\Permission\Exceptions\UnauthorizedException; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; ... public function register() { $this->renderable(function (MethodNotAllowedHttpException $e) { return response()->json(['error' => 'Method Not Allowed', 'success' => false, 'message' => $e->getMessage()], SymfonyResponse::HTTP_METHOD_NOT_ALLOWED); }); $this->renderable(function (NotFoundHttpException $e) { return response()->json(['error' => 'Http NotFound', 'success' => false, 'message' => $e->getMessage()], SymfonyResponse::HTTP_NOT_FOUND); }); $this->renderable(function (UnauthorizedException $e) { return response()->json(['error' => 'You do not have the required authorization.', 'success' => false, 'message' => $e->getMessage()], 403); }); $this->renderable(function (BadMethodCallException $e) { return response()->json(['error' => 'Bad Method Call Exception', 'success' => false, 'message' => $e->getMessage()], 403); }); }

Demikian Tutorial tentang Laravel Custom Error Handler Json Response, semoga bermanfaat. Happy Coding...